2013-02-26 160 views
6

在matplolib中的時間線圖中,我可以在左邊設置y軸不同的值,並用另一個scale設置另一個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 2013-02-26 06:27:37

+0

不,它不是這個在同一個陰謀我想要在左邊2 y軸和從圖 – 2013-02-26 06:48:34

+0

開始,所以你想要一個帶有4(?!)獨立Y軸的圖表?向下滾動到接受答案的後半部分。 – tacaswell 2013-02-26 07:09:03

回答

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 2017-04-11 19:19:19

+1

@raphael明確地傳遞一個位置給傳說調用來解除衝突。我不認爲'最佳'放置算法會考慮其他軸上的藝術家。 – tacaswell 2017-04-11 22:45:50