gpt4 book ai didi

python - 是否可以在 seaborn barplot 上输入置信区间/误差线的值?

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:05 29 4
gpt4 key购买 nike

我习惯在 seaborn 上绘制条形图,我喜欢它显示置信条的布局,但我在数据集中有一个特殊情况,我已经有了置信区间,如下所示:

month   ci-b     mean    ci-t
201801 0.020 0.0206 0.021
201802 0.019 0.0198 0.0204
201803 0.022 0.0225 0.0228
201804 0.022 0.0236 0.0240
201805 0.023 0.0235 0.0239

有没有办法手动输入 seaborn 置信区间线的值?或者将其用作“无”并使用一些 matlib 函数将置信区间放入图中(但保留 seaborn 的条形图)

当我这样做时:

ax = sns.barplot('month','mean',data=df, ci=None)

如预期的那样,我得到了一个正常的条形图:

This graphic

当我尝试像这样使用 matlib 的错误栏时:

ax = sns.barplot('month','mean',data=df, ci=None)
plt.errorbar(x=df['month'],y=df['mean'],yerr=(df['ci-t']-df['ci-b']))

一切都搞砸了,只是图中丢失了一条奇怪的线:

Like this graphic

我是不是用错了errorbar?有更好的工具吗?

最佳答案

更新(2019 年 8 月 2 日):

我之前的回答(见下文)夸大了错误,因为如果传递单个形状数组 (N,),yerr 对顶部和底部使用相同的错误。为了获得底部和顶部的不同错误,我们需要使用形状为 (2, N) 的数组。第一行用于底部错误,第二行用于顶部错误(来自 the documentation 。在代码中是:

# Bottom error, then top
yerr = [df['mean']-df['ci-b'], df['ci-t'] - df['mean']]

ax = sns.barplot('month','mean',data=df, ci=None)
plt.errorbar(x=[0, 1, 2, 3, 4],y=df['mean'],
yerr=yerr, fmt='none', c= 'r')

结果如下: enter image description here

错误现在在底部和顶部是不同的。

以下是直接比较,原始(对称)误差线为红色,非对称误差线为蓝色。我们可以直接看到差异:

enter image description here

较早的答案有夸大的错误

seabornmatplotlib 对月份的解释不同,导致错误栏的位置很奇怪。您还需要指定 fmt='none' 以避免将 errorbar 数据点绘制成一条线。以下代码将错误栏放置在正确的 x 位置:

ax = sns.barplot('month','mean',data=df, ci=None)
plt.errorbar(x=[0, 1, 2, 3, 4],y=df['mean'],
yerr=(df['ci-t']-df['ci-b']), fmt='none', c= 'r')

enter image description here

关于python - 是否可以在 seaborn barplot 上输入置信区间/误差线的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52767423/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com