2014-04-12 74 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