![](/img/trans.png)
[英]What is the default confidence interval used to draw error bars in a Seaborn barplot?
[英]Is it possible to input values for confidence interval/ error bars on seaborn barplot?
我习惯于在 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)
正如预期的那样,我得到了一个正常的条形图:
当我尝试像这样使用 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']))
一切都搞砸了,只是图中丢失了一条奇怪的线:
我使用错误栏错误吗? 有没有更好的工具来解决这个问题?
更新(2019 年 8 月 2 日):
我之前的回答(见下文)夸大了错误,因为如果传递单个形状数组 (N,), yerr
对顶部和底部使用相同的错误。 要获得底部和顶部的不同误差,我们需要使用形状为 (2, N) 的数组。 第一行用于底部错误,第二行用于顶部(来自文档。在代码中,这是:
# 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')
现在底部和顶部的错误不同。
以下是直接比较,原始(对称)误差线为红色,非对称误差线为蓝色。 我们可以直接看到区别:
较早的答案与夸大的错误
seaborn
和matplotlib
对月份的解释不同,导致误差线的位置很奇怪。 您还需要指定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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.