我正在尝试使用pandas.Series
绘制概率分布,并且正在努力为每个小节设置不同的yerr
。总而言之,我正在绘制以下分布:
它来自Series
,并且工作正常,除了yerr
之外。它不能超过1或0。因此,我想为每个小节设置不同的错误。因此,我去了和here的文档。
根据他们的说法,我有3个选项可以使用yerr
或xerr
:
我需要的情况是最后一个。在这种情况下,我可以使用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)
没有为上下设置不同的错误。我找到了一个示例和一个类似的SO问题here,尽管他们使用的是matplotlib
而不是pandas
,但它应该在这里起作用。
很高兴您对此有任何解决方案。 谢谢。
答案 0 :(得分:2)
奇怪的是,plt.bar
正常工作:
err_up = [0.3]*9
err_low = [0.1]*9
err3 = [err_low, err_up]
fig, ax = plt.subplots()
ax.bar(se.index, se, width=1.0, yerr=err3)
plt.show()
输出:
也许是熊猫的错误/特征/设计决定?
答案 1 :(得分:1)