Comment est-ordre des éléments dans matplotlib légende déterminé?

Je suis d'avoir à changer l'ordre des éléments dans une légende, lorsque je ne pense pas que je devrais avoir à le faire. J'ai essayer:

from pylab import *
clf()
ax=gca()
ht=ax.add_patch(Rectangle((1,1),1,1,color='r',label='Top',alpha=.01))
h1=ax.bar(1,2,label='Middle')
hb=ax.add_patch(Rectangle((1,1),1,1,color='k',label='Bottom',alpha=.01))
legend()
show()

et finissent avec des Bas-dessus du Milieu. Comment puis-je obtenir le bon ordre? N'est-il pas déterminé par l'ordre de création?

Comment est-ordre des éléments dans matplotlib légende déterminé?

Mise à jour: ce qui suit peut être utilisée pour forcer l'ordre. Je pense que cela peut être la façon la plus simple de le faire, et qui semble maladroit. La question est de savoir ce qui détermine l'ordre d'origine?

hh=[ht,h1,hb]
legend([ht,h1.patches[0],hb],[H.get_label() for H in hh])
  • Cela vous aide? matplotlib.org/users/...
  • Merci. J'ai ajouté à la question d'un moyen de forcer l'ordre, mais c'est maladroit, et la question est de savoir comment rendre inutile (si possible). Je suppose que je dois accepter une réponse que l'ordre est sans-papiers / indéterminé, si c'est le cas.
InformationsquelleAutor CPBL | 2014-03-08