2013-02-26 21 views
6

タイムラインダイアグラムのmatplolibでは、y軸に左の値を設定し、もう一つのy軸を他のスケールで右に設定できますか?matplotlibダイアグラム2 y軸

私はこれを使用しています:

import matplotlib.pyplot as plt 

plt.axis('normal') 
plt.axvspan(76, 76, facecolor='g', alpha=1) 
plt.plot(ts, 'b',linewidth=1.5) 
plt.ylabel("name",fontsize=14,color='blue') 
plt.ylim(ymax=100) 
plt.xlim(xmax=100) 
plt.grid(True) 
plt.title("name", fontsize=20,color='black') 
plt.xlabel('xlabel', fontsize=14, color='b') 
plt.show() 

私はこのプロットに2、y軸を与えることができますか?スパンセレクタで

plt.axvspan(76, 76, facecolor='g', alpha=1) 

私はそれを作ることができますどのように「これはスパンセレクタである」は、例えば、このスパンを特徴付けるために右のテキストにしたいですか?

+0

[matplotlib:overlay plots別のスケールで?](http://stackoverflow.com/questions/7733693/matplotlib-overlay-plots-with-different-scales) – tacaswell

+0

これは同じプロットではありません。私は2つのy軸を左に、プロット –

+0

から右にあるので、4(?!)のY軸を持つグラフが必要ですか?受け入れられた答えの後半にスクロールします。 – tacaswell

答えて

15

希望するtwinxexampleそれがある場合要旨は::

ax = plt.gca() 
ax2 = ax.twinx() 

その後、

ax.plot(...) 

し、あなたの場合は

ax2.plot(...) 

を有する第二(と思う)したいとの最初の軸にプロットすることができます

import matplotlib.pyplot as plt 

ax = plt.gca() 
ax2 = ax.twinx() 
plt.axis('normal') 
ax2.axvspan(74, 76, facecolor='g', alpha=1) 
ax.plot(range(50), 'b',linewidth=1.5) 
ax.set_ylabel("name",fontsize=14,color='blue') 
ax2.set_ylabel("name2",fontsize=14,color='blue') 
ax.set_ylim(ymax=100) 
ax.set_xlim(xmax=100) 
ax.grid(True) 
plt.title("name", fontsize=20,color='black') 
ax.set_xlabel('xlabel', fontsize=14, color='b') 
plt.show() 
+1

伝説についてはどうしますか?私は自分の上に積み重ねていました – raphael

+1

@raphael凡例の呼び出しにポジションを明示的に渡して、矛盾を解消しました。私は、「最良の」配置アルゴリズムが他の軸上のアーティストを考慮しているとは思わない。 – tacaswell