我尝试使用多个y轴创建一个错误栏图,使用here的多个轴作为模板。如果我只改变模板的这一行:
p1, = host.plot([0, 1, 2], [0, 1, 2], "b-", label="Density")
到此:
p1, = host.errorbar([0, 1, 2], [0, 1, 2], yerr=[0.5, 0.5, 0.5], fmt='b-', label="Density")
我得到了输出:
有人可以帮忙解释为什么会这样吗?提前谢谢。
答案 0 :(得分:1)
errorbar
和plot
会返回不同的内容。 plot
返回一个行列表,但在这种情况下,代码假设只返回一行,因此p1,
等等将其从列表中取出。
errorbar
返回一个Container对象,容器包含多行。您无法使用p1,
来errorbar
返回。相反,您需要以不同的方式处理它。
p1
稍后在代码中用于两个不同的目的:设置颜色和设置标签。事实证明,get_label
是Container的一种方法。 get_color
不是,但它是容器子项的方法,应该是相同的颜色。因此,将代码更改为仅将容器分配给p1
,并使用其中一个子容器的颜色。例如:
p1 = host.errorbar([0, 1, 2], [0, 1, 2], yerr=[0.5, 0.5, 0.5],
fmt='b-', label="Density")
然后:
host.yaxis.label.set_color(p1.get_children()[0].get_color())
和
host.tick_params(axis='y', colors=p1.get_children()[0].get_color(), **tkw)
图例设置代码根本不需要更改。