web-dev-qa-db-fra.com

Modifier le texte de l'étiquette de la légende du tracé principal

Jusqu'à présent, j'ai pu très bien étiqueter les sous-parcelles, mais j'ai un problème avec la principale.

Voici la partie pertinente de mon code:

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

Et voici ce que j'ai jusqu'à présent: enter image description here Remarquez la longue étiquette de la ligne bleue. Je voudrais que cela soit étiqueté comme "Pitch" au lieu du nom de fichier. Dans quelle ligne puis-je faire cela?

32
N.K.

Vous devez accéder à l'objet legend() et utiliser set_text() pour modifier les valeurs du texte, un exemple simple:

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

Dans votre cas, vous modifiez le premier élément de la légende, je suis sûr que l'index 0 Dans L.get_texts()[0] s'applique également à votre problème.

53
CT Zhu

Autrement:

ax.legend(labels=mylabels)
55
ksindi