2014-04-12 36 views
15

到目前为止,我已经能够标记subplots蛮好的,但我有一个主要的问题。改变主要的情节传说标签文本

这里是我的代码的相关部分:

data_BS_P = data[channels[0]] 
data_BS_R = data[channels[1]] 
data_BS_Y = data[channels[2]] 
plot_BS_P = data_BS_P.plot() #data_BS_P is a pandas dataframe 
axBS = plot_BS_P.gca() 
axBS.plot(data_BS_R, label='Roll') 
axBS.plot(data_BS_Y, label='Yaw') 
axBS.set_ylabel('Amplitude (urad)') 
axBS.legend(loc='upper center', bbox_to_anchor=(0.5, 1.05), ncol=3, 
      fancybox=True, shadow=True) 
ml1 = MultipleLocator(10) 
ml2 = MultipleLocator(3600) 
axBS.yaxis.set_minor_locator(ml1) 
axBS.xaxis.set_minor_locator(ml2) 
plot_BS_P.save('L1-SUS-BS_M1_DAMP_PRY_INMON.jpg') 

这是我到目前为止有:enter image description here 通知为蓝线冗长的标签。我希望将其标记为“Pitch”而不是文件名。我可以在哪条线上做?

+0

您还没有公布足够的代码来解决这个问题。将代码放在绘制蓝线的地方。我假设问题出现在这一行'plot_BS_P = data_BS_P.plot()'中。 – ebarr

+0

@ebarr,'plot_BS_P = data_BS_P.plot()'做到了。 'data_BS_P'可能是一个'pandas'' DataFrame',它有自己的名字吸入。 O.P.我是对的吗? –

+0

这是绘制蓝线的data_BS_P.plot()。上面这行是data = TimeSeriesDict.fetch(channels,start,end,verbose = True),其余的是我必须下载的大量频道列表... –

回答

36

您需要获得legend()对象的访问和使用set_text()更改文本值,一个简单的例子:

plt.plot(range(10), label='Some very long label') 
plt.plot(range(1,11), label='Short label') 
L=plt.legend() 
L.get_texts()[0].set_text('make it short') 
plt.savefig('temp.png') 

enter image description here

在你的情况,你改变在第一项传说中,我相当确信L.get_texts()[0]中的0索引也适用于您的问题。

24

另一种方式:

ax.legend(labels=mylabels) 
+3

这是迄今为止最简单的方式案件。谢谢。 – KobeJohn