私は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()
matplotlib-usersのスレッドごとに、次を使用できます
import matplotlib.pyplot as plt
for ax in plt.gcf().axes:
try:
ax.label_outer()
except:
pass
try
必要なのですか?それがなくても大丈夫そうです。
try
plt.gcf().axes
リストのすべての要素がsubplot
(label_outer
メソッドを使用して)インスタンスであることが保証されているわけではないため、が必要です。
Axes.tick_params()を使用できます:
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212, sharex=ax1)
ax1.tick_params(labelbottom=False)
サブプロットの作成中に軸をplt.subplots
asと共有できます
fig, axes = plt.subplots(nrows=2, sharex=True)
これにより、内側の軸の目盛りが自動的にオフになります。
完全な例:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, sharex=True)
axes[0].plot([1,2,3])
axes[1].plot([3,2,1])
plt.show()
label_outer()
作業に思えるstackoverflow.com/a/12751192/125507
plt.setp(ax2.get_yticklabels(), visible=True)
。完璧に動作しました。