2016-11-29 35 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