Errorbar 不在数据处

Errorbar not at the data

我在使用 pyplot 中的 errorbar 函数时遇到问题。它在看似随机的位置绘制误差线,我不明白为什么。

这是我正在使用的:

def PlotResults(X,Y,ErrorBarUp,ErrorBarDown,Header='',xLabel='',yLabel='',Bool=1):

    fig,ax = plt.subplots()
    plt.plot(X,Y/Y,color='r',label='1:1 - Linie')
    plt.plot(X, Y,marker='d',color='b',label='S_j/C_j')
    plt.errorbar(X,Y,xerr=None,yerr=[ErrorBarDown,ErrorBarUp],fmt='',color=c,capsize=2,elinewidth=0.5)

使用这个例子:

x = 1+np.arange(0,1,0.01)
y = 1+np.exp(-x)
yerr = 0.1*np.sqrt(x)+0.1
xerr = yerr-0.5
PlotResults(x,y,xerr,yerr,'Hallo','x-Achse','y-Achse',False)

我得到以下内容

然而,误差线应该在蓝点上!

有什么建议,出了什么问题?

yerr 参数应该是非负的。如果它们是负数,它们将在您的 "plot" 的另一侧结束,就像您的示例中发生的那样。您的行的偏移​​量只是 ErrorBarUp.

如果我只是将其更改为在第二个 y 错误上使用 abs(),它就会起作用。至少看起来它确实有效:

plt.errorbar(X,Y,yerr=[ErrorBarDown,abs(ErrorBarUp)],fmt='',color='c',capsize=2,elinewidth=0.5)