我试着用pandas.Series
来绘制概率分布图,我正在努力为每个条设置不同的yerr
。总之,我绘制了以下分布图:
它来自于Series
,除了yerr
之外,它工作正常。它不能跨越1或0。所以,我想为每个条设置不同的错误。因此,我去了文档,它是here和here。你知道吗
根据他们的说法,我有3个选项可以使用yerr
aor 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)
它没有为低和高设置不同的错误。我发现了一个例子here和一个类似的SO问题here,尽管他们使用的是matplotlib
而不是pandas
,但在这里应该是可行的。你知道吗
我很高兴你能解决这个问题。 非常感谢。你知道吗
奇怪的是,
plt.bar
和预期的一样:输出:
熊猫的缺陷/特性/设计决策?你知道吗
基于@Quanghoang的评论,我开始认为这是一个bug。因此,我尝试更改
yerr
形状,令人惊讶的是,以下代码起了作用:观察我在
err3
中包含了一个新的轴。现在它是一个(1,2,N)
数组。然而,文档说它应该是(2,N)
。你知道吗另外,我发现的一个可能的解决方法是设置
ax.ylim(0,1)
。它不能解决问题,但可以正确地绘制图形。你知道吗相关问题 更多 >
编程相关推荐