具有多个 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")
我得到输出:
- 具有多个 y 轴但仅显示 p1 数据的误差条图。
- 一个'ValueError: too many values to unpack'。
谁能帮忙解释一下为什么会这样?提前致谢。
errorbar
和 plot
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)
图例设置代码根本不需要更改。
我正在尝试使用来自 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")
我得到输出:
- 具有多个 y 轴但仅显示 p1 数据的误差条图。
- 一个'ValueError: too many values to unpack'。
谁能帮忙解释一下为什么会这样?提前致谢。
errorbar
和 plot
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)
图例设置代码根本不需要更改。