是否可以在Seabar小节上输入置信区间/误差条的值?

时间:2018-10-11 19:17:26

标签: python pandas seaborn

我习惯于在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

是否有一种方法可以手动输入海洋置信区间线的值?或将其用作“无”并使用一些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

我使用错误栏错误吗?有更好的工具吗?

1 个答案:

答案 0 :(得分:3)

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