Matplotlib 時系列をプロット

Suraj Joshi 2023年1月30日
  1. Matplotlib でテキストを datetime.datetime 形式に変換して時系列データをプロットする
  2. matplotlib.pyplot.plot_date() メソッドを用いた Matplotlib の時系列データのプロット
Matplotlib 時系列をプロット

Python で時系列データをプロットするには、datetime.strptime() 関数を使って、テキスト形式の日付を datetime.datetime 形式に変換します。また、matplotlib.pyplot.plot_date() 関数を利用することもできます。

Matplotlib でテキストを datetime.datetime 形式に変換して時系列データをプロットする

from datetime import datetime
import matplotlib.pyplot as plt

dates = [
    "2020-may-20",
    "2020-may-21",
    "2020-may-22",
    "2020-may-23",
    "2020-may-24",
    "2020-may-25",
    "2020-may-26",
]
x = [datetime.strptime(date, "%Y-%b-%d").date() for date in dates]
y = [20, 30, 35, 18, 24, 28, 26]

plt.plot(x, y, marker="o")
plt.gcf().set_size_inches(9, 7)
plt.show()

出力:

テキストを日付時間形式に変換して Matplotlib で時系列データをプロットする

これは、まずテキスト中の日付を strptime() メソッドを用いて datetime 形式に変換することで、dates リスト内の時系列データのプロットを生成します。datetime オブジェクトに対して date() メソッドを使用すると、datetime オブジェクトの時間部分は無視されます。そして、plot() メソッドを用いて datetime 形式でデータをプロットします。

matplotlib.pyplot.plot_date() メソッドを用いた Matplotlib の時系列データのプロット

日付が datetime 形式であれば、matplotlib.pyplot.plot_date() メソッドを用いてデータから時系列プロットを生成することができます。

from datetime import datetime
import matplotlib.pyplot as plt

dates = [
    "2020-may-20",
    "2020-may-21",
    "2020-may-22",
    "2020-may-23",
    "2020-may-24",
    "2020-may-25",
    "2020-may-26",
]
x = [datetime.strptime(date, "%Y-%b-%d").date() for date in dates]
y = [20, 30, 35, 18, 24, 28, 26]

plt.plot_date(x, y)
plt.gcf().set_size_inches(8, 6)
plt.tight_layout()
plt.show()

出力:

plot_date メソッドを用いて Matplotlib で時系列データをプロットする

これは時系列データの散布図を作成します。折れ線グラフを作成したい場合は、plot_date() メソッドの引数に linestyle ='solid' を指定します。

from datetime import datetime
import matplotlib.pyplot as plt

dates = [
    "2020-may-20",
    "2020-may-21",
    "2020-may-22",
    "2020-may-23",
    "2020-may-24",
    "2020-may-25",
    "2020-may-26",
]
x = [datetime.strptime(date, "%Y-%b-%d").date() for date in dates]
y = [20, 30, 35, 18, 24, 28, 26]

plt.plot_date(x, y, linestyle="solid")
plt.gcf().set_size_inches(8, 6)
plt.tight_layout()
plt.show()

出力:

Matplotlib の plot_date メソッドを用いた時系列データの折れ線グラフ

これは、matplotlib.pyplot.plot_date() メソッドを用いて時系列データの折れ線グラフを生成します。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn