Python 将Matplotlib errorbars放置在不在杆中心的位置

Python 将Matplotlib errorbars放置在不在杆中心的位置,python,matplotlib,Python,Matplotlib,我正在Matplotlib中生成一个带有errorbars的堆叠条形图。不幸的是,有些层相对较小,数据也不同,因此多个层的错误条可能会重叠,使它们难以读取或不可能读取 例如: 有没有一种方法可以设置每个错误条的位置(即沿x轴移动),从而使重叠线显示在相邻的位置,而不是在彼此的顶部?多亏了tcaswell的评论,我发现: 诀窍是不要在条中包含错误条(通过yerr kword),而是分别绘制条和错误条。这样,您可以指定errorbar的x和y位置 仅使用yerr=numpy.vstack([[0]

我正在Matplotlib中生成一个带有errorbars的堆叠条形图。不幸的是,有些层相对较小,数据也不同,因此多个层的错误条可能会重叠,使它们难以读取或不可能读取

例如:


有没有一种方法可以设置每个错误条的位置(即沿x轴移动),从而使重叠线显示在相邻的位置,而不是在彼此的顶部?

多亏了tcaswell的评论,我发现: 诀窍是不要在条中包含错误条(通过yerr kword),而是分别绘制条和错误条。这样,您可以指定errorbar的x和y位置

仅使用
yerr=numpy.vstack([[0]*len(std),std])
向上绘制错误条也有助于清晰

我的代码中包含的绘图函数如下所示:

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]

我不知道如何使用
bar
,但是你可以使用
errorbar
,像
errorbar(x\u偏移+bar\x,cumsum(bar\u高度),y\u err)
。@tcaswell:谢谢,这让我走上了正确的道路