Порядок в легендах сюжетов python

мне нужно построить несколько наборов данных на одном участке, и я использую matplotlib.

для некоторых сюжетов я использую plt.plot() и для других я использую plt.errorbar(). Но когда я делаю легенду, те, которые созданы с plt.plot() появляется первым, независимо от того, в каком порядке я положил их в файл (и zorder похоже, не влияет на позицию в легенде).

как я могу дать заказ, который я хочу в легенде, независимо от того, как я строю данные?

1 ответов


вы можете настроить заказ вручную, получив маркеры и метки легенды с помощью ax.get_legend_handles_labels, а затем переупорядочивание полученных списков и их подача в ax.legend. Вот так:

import matplotlib.pyplot as plt
import numpy as np

fig,ax = plt.subplots(1)

ax.plot(np.arange(5),np.arange(5),'bo-',label='plot1')
ax.errorbar(np.arange(5),np.arange(1,6),yerr=1,marker='s',color='g',label='errorbar')
ax.plot(np.arange(5),np.arange(2,7),'ro-',label='plot2')

handles,labels = ax.get_legend_handles_labels()

handles = [handles[0], handles[2], handles[1]]
labels = [labels[0], labels[2], labels[1]]

ax.legend(handles,labels,loc=2)
plt.show()

enter image description here