1. ホーム
  2. python

[解決済み] matplotlibはX軸を共有していますが、X軸の目盛りラベルを両方とも表示せず、片方だけ表示します。

2023-02-24 19:43:38

質問

python + matplotlibを使用していますが、2つのプロットで軸を共有しています。もし graph1.set_xticklabels([]) を設定しようとすると、軸が共有されているため、何の効果もありません。軸を共有し、かつ、1つのプロットのX軸を隠すことができる方法はありますか?

どのように解決するのですか?

これは、共有軸を使用する際によくある失敗例です。

幸いなことに、簡単な修正があります。 plt.setp(ax.get_xticklabels(), visible=False) を使って、1つの軸だけラベルを見えなくすることです。

と同じです。 [label.set_visible(False) for label in ax.get_xticklabels()] は、何はともあれ setp は、個々のオブジェクトと同様に、 matplotlib オブジェクトの反復処理可能なものに対して自動的に動作します。

例として

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.plot(range(10), 'b-')

ax2 = fig.add_subplot(2,1,2, sharex=ax1)
ax2.plot(range(10), 'r-')

plt.setp(ax1.get_xticklabels(), visible=False)

plt.show()

<イグ