matplotlib-具有错误轴对象的多轴图例 [英] matplotlib - Legend with multiple axes with errorbar object

查看:75
本文介绍了matplotlib-具有错误轴对象的多轴图例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难在具有两个轴集和一个错误栏的绘图上获取图例.代码如下:

I am having trouble to get legends on a plot with two axes sets and an errorbar. The code goes as follows:

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不是错误栏图,则此方法有效.有什么建议可以在一个框中获得所有图的图例吗?

This works if plot1 is not an errorbar plot. Any recommendations to get a legend with all plots in one box?

非常感谢.

推荐答案

使用来自 this 的代码问题应该起作用:

Using the code from this question should work:

h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax1.legend(h1+h2, l1+l2, loc=2)

这篇关于matplotlib-具有错误轴对象的多轴图例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆