J'essaie de créer un parallélogramme dans PyPlot. Je ne suis pas en train de dessiner le parallélogramme - je mets d'abord les flèches vectorielles - en utilisant le code suivant:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
plt.axis([-5,5,-5,5])
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
plt.grid()
plt.arrow(0,0, 3,1, head_width=0.2, color='r', length_includes_head=True, label='u')
plt.arrow(0,0, 1,3, head_width=0.2, color='r', length_includes_head=True, label='v')
plt.arrow(0,0, 4,4, head_width=0.2, color='r', length_includes_head=True, label='u+v')
plt.legend()
Cela renvoie l'erreur suivante:
No handles with labels found to put in legend.
Je ne sais pas pourquoi, car, d'après la documentation de plt.arrow()
, label
est un kwarg acceptable, et plt.legend()
devrait ostensiblement lire cela. Le reste de la figure dessine bien; il manque juste la légende.
Vous pouvez définir explicitement les éléments dans la légende.
Pour un contrôle total des artistes qui ont une entrée de légende, il est possible de passer respectivement un itérable d'artistes de légende suivi d'un itérable d'étiquettes de légende. Référence
Exemple:
arr1 = plt.arrow(0,0, 3,1, head_width=0.2, color='r', length_includes_head=True)
arr2 = plt.arrow(0,0, 1,3, head_width=0.2, color='g', length_includes_head=True)
arr3 = plt.arrow(0,0, 4,4, head_width=0.2, color='b', length_includes_head=True)
plt.xlim(0,5)
plt.ylim(0,5)
plt.legend([arr1, arr2, arr3], ['u','v','u+v'])