実現したいこと
matplotlibで年をまたぐ数か月間~数年の時系列データをプロットするとき、x軸の目盛りについて、年は1月のみに表記し他の月は月だけ表示したい
(以下のグラフのような軸目盛です)
前提
Pythonでpd.DataFrameに格納している12月~翌年5月の時系列データをグラフ化しようとしています。
同じ年度内でも毎月「Feb 2023」のように年も表示されてしまうので、1月以外は年の情報を省いて月のみ表示したいと考えています。
上の実現したいグラフはdf.plot()で描画したのですが、余計な目盛りも表示されていますし、データフレーム型以外のデータをプロットするときにも使いたいので、普通にmatplotlibのsubplotsでもこのようなグラフを描画できるようになりたいです。
発生している問題
matplotlib.dates.DateFormatterを使ってプロットしたグラフ
該当のソースコード
Python
1fig, ax = plt.subplots()2 3#軸目盛を時間軸に設定4locator=mdates.MonthLocator(interval=1)5ax.xaxis.set_major_locator(locator)6 7formatter=mdates.DateFormatter('%b\n%Y')8ax.xaxis.set_major_formatter(formatter)9 10#時系列インデックスのデータフレーム(df)に格納した時系列データをプロット11ax.plot(df)
試したこと
mdates.YearLocaterとset_minor_locator、set_minor_formatterを組み合わせてみたりしましたが上手くいきませんでした。
補足情報(FW/ツールのバージョンなど)
python : 3.9.16
matplotlib : 3.7.1
pandas : 1.5.2
0 コメント