Порядок в легендах сюжетов 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()