2つのサブプロットを作成した後にそれらのX軸を共有する方法 質問する

2つのサブプロットを作成した後にそれらのX軸を共有する方法 質問する

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 axes

plt.show()

コメントの代わりに、両方の x 軸を共有するコードを挿入したいと思います。どうすればいいですか? 関連する属性がいくつかあり_shared_x_axes_shared_x_axes図の軸 ( fig.get_axes()) をチェックすると、それらをリンクする方法がわかりません。

ベストアンサー1

軸を共有する通常の方法は、作成時に共有プロパティを作成することです。

fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212, sharex = ax1)

または

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)

したがって、軸を作成した後に共有する必要はありません。

しかし、何らかの理由で作成された軸を共有する(実際には、いくつかのサブプロットを作成する別のライブラリを使用しています。ここ理由が何であれ、解決策はあります:

使用

ax2.sharex(ax1)

は 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)

ax2.sharex(ax1)
ax1.set_xticklabels([])
# ax2.autoscale() ## call autoscale if needed

plt.show()

軸のリストを取得するには、次のようにします。

for ax in axes[1:]:
    ax.sharex(axes[0])

おすすめ記事