2014-04-12 24 views
15

Finora sono stato in grado di etichettare le sottotrame bene ma ho un problema con quello principale.Modificare il testo dell'etichetta della legenda del grafico principale

Ecco la parte rilevante del mio codice:

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') 

E questo è quello che ho finora: enter image description here Avviso l'etichetta lungo per la linea blu. Mi piacerebbe che fosse etichettato come "Pitch" al posto del nome del file. In quale linea posso farlo?

+0

Non hai postato abbastanza il codice per risolvere questo problema. Pubblica il codice in cui è tracciata la linea blu. Presumo che il problema sia in questa riga 'plot_BS_P = data_BS_P.plot()'. – ebarr

+0

@ebarr, 'plot_BS_P = data_BS_P.plot()' l'ha fatto. 'data_BS_P' è probabilmente un' pandas' 'DataFrame', che ha il proprio nome blot-in. Ho ragione, O.P.? –

+0

È il data_BS_P.plot() che traccia la linea blu. La riga sopra è data = TimeSeriesDict.fetch (canali, start, end, verbose = True) e il resto è l'enorme elenco di canali che devo scaricare ... –

risposta

36

È necessario ottenere l'accesso dell'oggetto legend() e utilizzare set_text() di modificare i valori di testo, un semplice esempio:

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

Nel tuo caso, si sta modificando il primo elemento della legenda, sono abbastanza sicuro che l'indice 0 in L.get_texts()[0] si applica anche al tuo problema.

24

Un altro modo:

ax.legend(labels=mylabels) 
+3

Questo è stato di gran lunga il modo più semplice presentato qui per il mio uso Astuccio. Grazie. – KobeJohn

Problemi correlati