Python 图例中的顺序

Python 图例中的顺序,python,matplotlib,plot,Python,Matplotlib,Plot,我需要在同一个绘图上绘制多组数据,并使用matplotlib 对于一些绘图,我使用plt.plot(),对于其他绘图,我使用plt.errorbar()。但是,当我制作图例时,使用plt.plot()创建的图例会首先出现,无论我将它们以何种顺序放入文件中(并且zorder似乎对图例中的位置没有影响) 无论我以何种方式绘制数据,如何在图例中给出所需的顺序?您可以手动调整顺序,方法是使用ax获取图例句柄和标签。get_legend_handles_labels,然后对结果列表重新排序,并将其馈送到a

我需要在同一个绘图上绘制多组数据,并使用matplotlib

对于一些绘图,我使用
plt.plot()
,对于其他绘图,我使用
plt.errorbar()
。但是,当我制作图例时,使用
plt.plot()
创建的图例会首先出现,无论我将它们以何种顺序放入文件中(并且
zorder
似乎对图例中的位置没有影响)


无论我以何种方式绘制数据,如何在图例中给出所需的顺序?

您可以手动调整顺序,方法是使用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()