具有多个 y 轴的误差条图会产生 ValueError

Errorbar plot with multiple y-axes produces ValueError

我正在尝试使用来自 here 的多轴图作为模板创建一个多 y 轴的误差条图。如果我只更改模板的这一行:

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")

我得到输出:

  1. 具有多个 y 轴但仅显示 p1 数据的误差条图。
  2. 一个'ValueError: too many values to unpack'。

谁能帮忙解释一下为什么会这样?提前致谢。

errorbarplot return 不同的东西。 plot returns 行列表,但在这种情况下,代码假设只有一行 returned,因此 p1, 等将其删除的名单。

errorbar 而不是 return 一个 Container 对象,并且该容器包含多行。您不能将 p1, 用于 errorbar 的 return。相反,您需要以不同的方式处理它。

p1 在后面的代码中用于两个不同的目的:设置颜色和设置标签。事实证明,get_label 是容器的一个方法。 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)

图例设置代码根本不需要更改。