2つのサブプロット軸を共有しようとしていますが、図の作成後にx軸を共有する必要があります。したがって、たとえば、この図を作成します。
import numpy as np
import matplotlib.pyplot as plt
t= np.arange(1000)/100.
x = np.sin(2*np.pi*10*t)
y = np.cos(2*np.pi*10*t)
fig=plt.figure()
ax1 = plt.subplot(211)
plt.plot(t,x)
ax2 = plt.subplot(212)
plt.plot(t,y)
# some code to share both x axis
plt.show()
コメントの代わりに、両方のx軸を共有するコードを挿入します。どうすればそれができるのか見当がつかなかった。図軸(fig.get_axes()
)をチェックすると、いくつかの属性_shared_x_axes
および_shared_x_axes
がありますが、それらをリンクする方法がわかりません。
軸を共有する通常の方法は、作成時に共有プロパティを作成することです。どちらか
fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212, sharex = ax1)
または
fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
したがって、作成後に軸を共有する必要はありません。
ただし、何らかの理由で、軸が作成された後に軸を共有する必要がある場合(実際には、 ここ 、または はめ込み軸の共有 が理由かもしれません)、まだ解決策があります:
を使用して
ax1.get_shared_x_axes().join(ax1, ax2)
2つの軸ax1
とax2
の間にリンクを作成します。作成時の共有とは対照的に、(必要な場合)軸の1つに対してxticklabelsを手動でオフにする必要があります。
完全な例:
import numpy as np
import matplotlib.pyplot as plt
t= np.arange(1000)/100.
x = np.sin(2*np.pi*10*t)
y = np.cos(2*np.pi*10*t)
fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212)
ax1.plot(t,x)
ax2.plot(t,y)
ax1.get_shared_x_axes().join(ax1, ax2)
ax1.set_xticklabels([])
# ax2.autoscale() ## call autoscale if needed
plt.show()