2013-01-15 32 views
20

我有下面的代碼示例:多單傳說軸

fig1.suptitle('Test') 
ax1 = fig1.add_subplot(221) 
ax1.plot(x,y1,color='b',label='aVal') 
ax2 = ax1.twinx() 
ax2.plot(x,y2,color='g',label='bVal') 
ax2.grid(ls='--', color='black') 
legend([ax1,ax2], loc=2) 

次要情節與上相同的次要情節不同比例的兩個軸,我想兩軸只有一個傳說。我試過上面的代碼,它不起作用,只產生ax2的細節。有任何想法嗎?

+0

見http://stackoverflow.com/questions/5484922/secondary- axis-with-twinx-how-to-add-to-legend爲同一個問題。並且也給出了相同的解決方案。 – joris

+1

是的,它的確如此。我對SO的搜索沒有提到它。此外,這個問題並沒有說明它需要一個關於標題的單一圖例。但謝謝你讓我知道。我想知道是否有更優雅的東西,我想出了。也許我們應該添加一個這樣做的ax1.combine_legends(ax2)方法? – arun

回答

43

我覺得它是一個可行的解決方案!有沒有比這更好的方法?

fig1.suptitle('Test') 
ax1 = fig1.add_subplot(221) 
ax1.plot(x,y1,color='b',label='aVal') 
ax2 = ax1.twinx() 
ax2.plot(x,y2,color='g',label='bVal') 
ax2.grid(ls='--', color='black') 
h1, l1 = ax1.get_legend_handles_labels() 
h2, l2 = ax2.get_legend_handles_labels() 
ax1.legend(h1+h2, l1+l2, loc=2) 
+0

這適合我! – gnr

1

這確實是一箇舊的帖子,但我想我找到了一個更容易控制的方法。

這(matplotlib 版本 '1.5.3'。)上python3.5:

import matplotlib.pyplot as plt 
fig, ax1 = plt.subplots() 
plt.suptitle('Test') 
ax2 = ax1.twinx() 
a, = ax1.plot([1, 2, 3], [4, 5, 6], color= 'blue', label= 'plt1') 
b, = ax2.plot([7, 8, 9],[10, 11, 12], color= 'green', label= 'plt2') 
p = [a, b] 
ax1.legend(p, [p_.get_label() for p_ in p], 
      loc= 'upper center', fontsize= 'small') 

show()