Pandasの時系列プロットに垂直線を描画する方法
Pandasを使ってデータフレームを作成し、Matplotlibのaxvline()メソッドを利用することで、時系列プロット上の任意の位置に垂直線を簡単に追加できます。本記事では、その具体的な手順をサンプルコード付きで解説します。
手順
Pandasを使用して、日付をインデックスとしたデータフレームを作成します。
データフレームを基に、Matplotlibで時系列の折れ線グラフをプロットします。
axvline()メソッドを使い、指定した日付の位置に緑色の破線(linestyle="dashed")で垂直線を追加します。同様に
axvline()を使い、別の日付の位置に赤色の破線で垂直線を追加します。plt.show()を実行して、完成したグラフを表示します。
サンプルコード
import pandas as pd
from matplotlib import pyplot as plt
df = pd.DataFrame(index=pd.date_range("2019-07-01", "2019-07-31"))
df["y"] = 1
ax = df.plot()
ax.axvline("2019-07-24", color="green", linestyle="dashed")
ax.axvline("2019-07-31", color="red", linestyle="dashed")
plt.show()実行結果
上記のコードを実行すると、2019年7月1日から7月31日までの時系列プロットが表示され、7月24日の位置に緑色の破線、7月31日の位置に赤色の破線がそれぞれ描画されます。

ポイント解説
pd.date_range()を使うことで、開始日から終了日までの日付インデックスを自動生成できます。axvline()の第1引数には、x軸上の位置(この場合は日付文字列)を指定します。時系列インデックスの場合、日付形式の文字列がそのまま使えるのが便利です。colorパラメータで線の色を、linestyleパラメータで線種(実線・破線・点線など)を自由にカスタマイズできます。特定のイベント日や閾値の日付を強調表示したい場合に、この手法は非常に有効です。
-
Pythonで時系列データをプロットする方法をわかりやすく解説
Pythonのmatplotlibを使えば、時系列データ(日時を軸にしたデータ)を簡単にグラフ化できます。ここでは、datetimeオブジェクトを含むデータを折れ線グラフとして描画する基本的な手順を紹介します。 時系列プロットの基本手順 numpyを使用して、x軸(日時データ)とy軸(数値データ)を作成します。 plot()メソッドを使って、作成したx・yのデータをプロットします。 show()メソッドを実行して、図を画面に表示します。 コード例 以下のサンプルコードでは、2021年1月1日の0時から23時までの24個の日時データを生成し、それに対応するランダムな数値をy軸としてプロットし
-
【Python・Matplotlib】散布図に線を重ねて描画(オーバープロット)する方法
PythonのMatplotlibでは、scatter()メソッドでデータポイントの散布図を作成した後、plot()メソッドを使うことで、その散布図の上に自由に線を重ねて描画(オーバープロット)できます。回帰直線や基準線を可視化したい場合などに非常に便利なテクニックです。 実装の手順 figure()メソッドを使って、サイズ(4, 3)の新しい図を作成するか、既存の図をアクティブにします。 plt.axes()で現在の図に軸を追加し、それをカレントのAxesとして取得します。 scatter()メソッドで散布図のポイントを描画します。 ax.plot()メソッドで線を描画し、散布図の上に重ね