Car*_*ina 3 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
Run Code Online (Sandbox Code Playgroud)
有没有办法手动输入seaborn置信区间线的值?或将其用作“无”并使用一些matlib函数将置信区间放入图形中(但保留seaborn的小节)
当我做:
ax = sns.barplot('month','mean',data=df, ci=None)
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,我得到了一个正常的条形图:
当我尝试使用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']))
Run Code Online (Sandbox Code Playgroud)
一切变得混乱,图中只丢失了一条奇怪的线:
我是否使用错误栏错误?有更好的工具吗?
更新(2019年8月2日):
我先前的答案(请参阅下文)夸大了该错误,因为yerr如果传递单个形状(N,)数组,则顶部和底部将使用相同的错误。为了获得底部和顶部的不同错误,我们需要使用形状(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')
Run Code Online (Sandbox Code Playgroud)
现在,底部和顶部的错误有所不同。
以下是直接比较,原始(对称)误差线用红色表示,非对称误差线用蓝色表示。我们可以直接看到差异:
夸张错误的早期答案
对月份的理解不同,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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |