将Matplotlib错误栏放在栏的中心

时间:2012-10-17 11:26:55

标签: python matplotlib

我在Matplotlib中生成带有错误栏的堆积条形图。不幸的是,一些层级相对较小且数据不同,因此几层的错误栏可能会重叠,使得它们很难或无法读取。

示例:

example screenshot

有没有办法为每个错误栏设置位置(即沿x轴移动),所以重叠的行显示在旁边而不是彼此叠加?

1 个答案:

答案 0 :(得分:2)

感谢tcaswell的评论,我明白了: 诀窍是不在栏中包含错误栏(通过yerr kword),而是分别绘制条形和误差条。这样,您可以指定错误栏的x和y位置。

它还有助于清晰地仅使用yerr= numpy.vstack([[0]*len(std), std])来向上绘制错误栏。

here合并到绘图函数中,我的代码如下所示:

for j in range(set_count):
    tmp_accum = numpy.zeros(len(props[0]))
    for k in range(len(props)):
        ax1.bar(ind + j*b_width, props[k][set_label==j], width=b_width, color=color_sets[j][k], bottom=tmp_accum[set_label==j],label=labels[k])
        ax1.errorbar(ind + j*b_width +(1+k)*0.01, props[k][set_label==j]+tmp_accum[set_label==j],yerr= numpy.vstack([[0]*1, std_devs[k][j]]), ecolor="black",elinewidth =3)
        tmp_accum += props[k]