matplotlib を使用して複数の y 軸を持つ可能性のある (png) プロットを生成する一般的なプロット クラスがありますが、常に日付を示す単一の (共有) x 軸があります。
これは、x 軸ラベルの書式設定を処理するメソッドです。
def format_xaxis(self, axis, primary):
steps = (1,2,3,4,6,12)
step = steps[min(len(self.dates) // 1000, 5)]
axis.set_axisbelow(True)
axis.xaxis.grid(b=True, which='minor', color='0.90', linewidth=0.5)
axis.xaxis.set_minor_locator(MonthLocator(bymonth=range(1,13,step)))
axis.xaxis.set_major_locator(YearLocator())
if primary:
axis.xaxis.set_major_formatter(DateFormatter(fmt='%b %y'))
axis.xaxis.set_minor_formatter(DateFormatter(fmt='%b'))
else:
plt.setp(axis.get_xticklabels(), visible=False)
入力あり:
- primary は、これが主軸かどうかを示すブール値です
- axis は matplotlib 軸インスタンスです
私が望む (そして上記の方法から期待される) ことは、主軸のみにラベルがあり、メジャー ラベルは月-年であり、マイナー ラベルは月のみであることです。
主軸にはメジャー ラベルのみが表示され、マイナー ラベルはまったく表示されません。
最後の 6 行を次のように変更すると:
axis.xaxis.set_major_locator(YearLocator())
axis.xaxis.set_major_formatter(DateFormatter(fmt='%b %y'))
axis.xaxis.set_minor_formatter(DateFormatter(fmt='%b'))
if not primary:
plt.setp(axis.get_xticklabels(), visible=False)
次に、マイナー ラベルがすべての軸に表示されます。
プライマリ x 軸のみにマイナー x 軸の目盛りラベルを表示するにはどうすればよいですか?
編集:
2番目のコードブロックでKevinGの提案を使用すると機能します:
axis.xaxis.set_major_locator(YearLocator())
axis.xaxis.set_major_formatter(DateFormatter(fmt='%b %y'))
axis.xaxis.set_minor_formatter(DateFormatter(fmt='%b'))
if not primary:
plt.setp(axis.get_xticklabels(minor=False), visible=False)
plt.setp(axis.get_xticklabels(minor=True), visible=False)