⏱️
matplotlibでx軸がdatetimeの場合に表示形式を変更する方法
X軸がdatetime型のプロットをするとデフォルトだと軸表示が04-12:30
という形式で表示されます。
日を跨ぐプロットの場合は良いのですが、跨がない場合は日の表示を省きたいのでその方法を調べました。
実現方法としてはset_major_formatter
とmatplotlibライブラリのdates
を使います。
matplotlib.datesの公式ページはここ
以下実行確認のversionはpython3.8.8
。
まずは何も指定せずにdatetimeをx軸にしてプロットします。
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
dts = [
datetime(2022, 2, 1, 12, 00, 00),
datetime(2022, 2, 1, 15, 00, 00),
datetime(2022, 2, 1, 18, 00, 00)
]
df = pd.DataFrame(
{
'x': dts,
'y': [1, 2, 3],
}
)
plt.figure()
plt.plot(df['x'], df['y'], marker='.')
作成される画像
ちょっと見づらい。
1. figureで指定する場合
set_major_formatterで以下の方に指定してあげると実現できました。
from matplotlib import dates as mdates
plt.figure()
plt.plot(df['x'], df['y'], marker='.')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
作成される画像(形式変更後)
うむ、スッキリ!!
2. axisで指定する場合
axisで形式指定する場合は以下のようにすれば良いようです。1.と同様の画像が生成されます。
fig, ax = plt.subplots()
ax.plot(df['x'], df['y'], marker='.')
ax.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M"))
(参考)
指定できる表示形式の一覧
よく忘れるので指定できる形式が確認できるページもおいておきます。
色々な形式で表示できます。
Discussion