2016-11-29 75 views
2

我使用matplotlib創建了一個情節,似乎我陷入了一個問題。 我畫3個次要情節,我想獲得傳說共同爲所有subplot matplotlib的常見傳奇

fig, (ax, ax2, ax3) = plt.subplots(3, 1, sharex=True) 
ax.plot(FRAME1['T1'],FRAME1['Num'], marker = 'o', label='1') 
ax2.plot(FRAME3['T1'],FRAME3['Num'], marker = 'o', label='2',color='r') 
ax2.plot(FRAME4['T1'],FRAME4['Num'], marker = 'o', label='3',color='turquoise') 
ax3.plot(FRAME2['T1'],FRAME2['Num'], marker = 'o', label='4',color='g') 

ax.set_ylim(-118, -116.5) 
ax3.set_ylim(-136, -135) 

plt.legend((ax,ax2,ax3),loc="upper left", bbox_to_anchor=[0, 1], 
      ncol=2, shadow=True, title="Legend", fancybox=True) 

的我已經使用了傳說中的實例,但它顯示僅在最後的插曲legen。

回答

2

當然,您需要在其中一個子圖上顯示圖例。這是你決定選擇哪一個。

爲了顯示就是傳說中的四根線,你需要傳說

plt.legend(handles = [line1, line2, ...]) 

又見Matplotlib legend guide提供對線的參考。
因此,這裏是一個工作示例

import numpy as np 
import matplotlib.pyplot as plt 

x = np.random.randint(0,12,size=(12,4)) 
y = np.random.randint(0,8,size=(12,4)) 

fig, (ax, ax2, ax3) = plt.subplots(3, 1, sharex=True, figsize=(5,5)) 

l, = ax.plot(x[:,0],y[:,0], marker = 'o', label='1') 
l2, =ax2.plot(x[:,1],y[:,1], marker = 'o', label='2',color='r') 
l3, =ax2.plot(x[:,2],y[:,2], marker = 'o', label='3',color='turquoise') 
l4, =ax3.plot(x[:,3],y[:,3], marker = 'o', label='4',color='g') 


plt.legend(handles=[l, l2, l3, l4],loc="upper left", bbox_to_anchor=[0, 1], 
      ncol=2, shadow=True, title="Legend", fancybox=True) 

plt.show() 

enter image description here

+0

非常感謝您!它幫助了很多! – Monica