2016-11-29 10 views
2

私はmatplotlibを使ってプロットを作成していますが、それは1つの問題を抱えているようです。 は私が3つのサブプロットを描き、私は伝説のインスタンスを使用しているが、それは唯一の最後のサブプロットにlegenを示し、それらのすべて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) 

ための共通の凡例を取得したいです。

答えて

2

もちろん、サブプロットの1つに凡例を表示する必要があります。あなたが選んだのはあなたの決定です。

凡例内のすべての4本のラインを表示するためには、あなたは伝説に

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

関連する問題