2012-05-11 3 views
1

У меня возникли проблемы с получением легенд на сюжете с двумя наборами осей и ошибкой. Код выглядит следующим образом:matplotlib - Легенда с несколькими осями с объектом errorbar

rect = 0.1, 0.1, 0.8, 0.8 
fig = p.figure() 

ax1 = fig.add_axes(rect) 
errorplot = ax1.errorbar(x, y, yerr = yerr, fmt = "o", label = r"errorbar") 
plot1 = ax1.plot(x1, y1, "^", color = "#00FF7F", label = r"plot") 
ax1.yaxis.tick_left() 
ax1.xaxis.tick_bottom() 
ax2 = fig.add_axes(rect, frameon=False) 
ax2.yaxis.tick_right() 
ax2.yaxis.set_label_position('right') 
ax2.xaxis.tick_top() 
ax2.xaxis.set_label_position('top') 
plot2 = ax2.plot(z, al, color = "#CD8500", linewidth =2, label= r"plot2") 
k = list(errorplot[:1]) 
plots = k + plot1 + plot2 
labels = [l.get_label() for l in k] 
ax1.legend(plots, labels, loc = 2) 
ax1.legend(loc = 2) 
p.savefig("test.pdf") 

Это работает, если plot1 не является графиком ошибок. Любые рекомендации, чтобы получить легенду со всеми сюжетами в одной коробке?

Большое спасибо.

ответ

1

Используя код из this question должен работать:

h1, l1 = ax1.get_legend_handles_labels() 
h2, l2 = ax2.get_legend_handles_labels() 
ax1.legend(h1+h2, l1+l2, loc=2) 
Смежные вопросы