Как определяется порядок предметов в легенде matplotlib?

Мне нужно изменить порядок элементов в легенде, когда я не думаю, что мне это нужно. Я попробую:

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

и в конечном итоге с низом выше среднего. Как я могу получить правильный заказ? Разве это не определяется порядком создания?

Обновление: следующие могут быть использованы для форсирования заказа. Я думаю, что это может быть самый простой способ сделать это, и это кажется неловким. Вопрос в том, что определяет исходный порядок?

hh=[ht,h1,hb]
legend([ht,h1.patches[0],hb],[H.get_label() for H in hh])

Ответы на вопрос(4)

Ваш ответ на вопрос