matplotlibで年をまたぐ時系列データをプロットするとき、1月にのみ年を表示したい

実現したいこと

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 コメント