【发布时间】:2019-11-15 12:04:33
【问题描述】:
我正在尝试使用pandas.Series 绘制概率分布,并且我正在努力为每个条形设置不同的yerr。总之,我正在绘制以下分布:
它来自Series,它工作正常,除了yerr。它不能超过 1 或 0。所以,我想为每个条设置不同的错误。因此,我查看了文档,该文档可在 here 和 here 找到。
根据他们的说法,我有 3 个选项可以使用 yerr a 或 xerr:
- 标量:所有数据点的对称 +/- 值。
- 标量:所有数据点的对称 +/- 值。
- shape(2,N): 将每个条形的 - 和 + 值分开。第一行包含较低的错误,第二行包含较高的错误。
我需要的箱子是最后一个。在这种情况下,我可以使用DataFrame、Series、array-like、dict 和str。因此,我为每个 yerr 条设置了数组,但是它没有按预期工作。为了复制正在发生的事情,我准备了以下示例:
首先我设置一个pandas.Series:
import pandas as pd
se = pd.Series(data=[0.1,0.2,0.3,0.4,0.4,0.5,0.2,0.1,0.1],
index=list('abcdefghi'))
然后,我将复制每个案例:
这按预期工作:
err1 = [0.2]*9
se.plot(kind="bar", width=1.0, yerr=err1)
这按预期工作:
err2 = err1
err2[3] = 0.5
se.plot(kind="bar", width=1.0, yerr=err1)
现在的问题是:这没有按预期工作!
err_up = [0.3]*9
err_low = [0.1]*9
err3 = [err_low, err_up]
se.plot(kind="bar", width=1.0, yerr=err3)
它没有为低和高设置不同的错误。我找到了一个示例 here 和一个类似的 SO 问题 here,虽然他们使用的是 matplotlib 而不是 pandas,但它应该在这里工作。
如果您对此有任何解决方案,我很高兴。 谢谢。
【问题讨论】:
标签: python pandas matplotlib