2012-10-16 16 views
17

セカンダリのy軸(twinxを使用して作成)を含む複数のサブプロットがある場合、サブプロット間でこれらのセカンダリのy軸をどのように共有できますか?私はそれらを自動的に均等にスケールするようにします(あとでy制限を手動で設定しないでください)。 プライマリy軸の場合は、shareyというキーワードをサブプロットの呼び出しで使用することができます。matplotlibのサブプロット間でセカンダリのy軸を共有する方法

以下の例は私の試みを示していますが、両方のサブプロットのセカンダリy軸を共有できません。私はmatplotlibの/ Pylabを使用しています:私は共有y軸を設定し軸()機能を使用する理由は、ということです

Example of two subplots with failed sharing of secondary y-axis

ax = [] 

#create upper subplot 
ax.append(subplot(211)) 
plot(rand(1) * rand(10),'r') 

#create plot on secondary y-axis of upper subplot 
ax.append(ax[0].twinx()) 
plot(10*rand(1) * rand(10),'b') 

#create lower subplot and share y-axis with primary y-axis of upper subplot 
ax.append(subplot(212, sharey = ax[0])) 
plot(3*rand(1) * rand(10),'g') 

#create plot on secondary y-axis of lower subplot 
ax.append(ax[2].twinx()) 
#set twinxed axes as the current axes again, 
#but now attempt to share the secondary y-axis 
axes(ax[3], sharey = ax[1]) 
plot(10*rand(1) * rand(10),'y') 

は、これは私のような何かを取得しますtwinxshareyというキーワードを受け付けていません。

私はWin7 x64でPython 3.2を使用しています。 Matplotlibのバージョンは1.2.0rc2です。

答えて

30

あなたはそうのようなAxes.get_shared_y_axes()を使用することができます:ここで

from numpy.random import rand 
import matplotlib 
matplotlib.use('gtkagg') 
import matplotlib.pyplot as plt 

# create all axes we need 
ax0 = plt.subplot(211) 
ax1 = ax0.twinx() 
ax2 = plt.subplot(212) 
ax3 = ax2.twinx() 

# share the secondary axes 
ax1.get_shared_y_axes().join(ax1, ax3) 

ax0.plot(rand(1) * rand(10),'r') 
ax1.plot(10*rand(1) * rand(10),'b') 
ax2.plot(3*rand(1) * rand(10),'g') 
ax3.plot(10*rand(1) * rand(10),'y') 
plt.show() 

私たちは一緒に二軸に参加しています。

希望に役立ちます。

+0

はい、それはさらに感謝してくれました。私はまた、彼らは同様にy軸を共有するようにプライマリy軸に参加しました。 – Puggie

+0

うれしい私は助けることができます。インターネットポイントをありがとう。 – dmcdougall

+1

それはうまくいかず、二番目の双子スケールは更新されますが、二番目の双子プロットはそのままです。 – Mattia

関連する問題