Python matplotlib中带有对数刻度的错误条

Python matplotlib中带有对数刻度的错误条,python,matplotlib,Python,Matplotlib,让我们假设我有一个错误Sx的数据x,我想用方法errorbar绘制它。现在我想知道如果我重新缩放到对数刻度会发生什么,它会正确地执行错误吗?错误传播应该停止 f(x)=对数(x) =>Sf=| Sx/x| 我可以想象matplotlib就是这样 Sf=对数Sx 这是完全错误的。那么,matplotlib实际在做什么呢?errorbar的工作方式是(或多或少)在您想要绘制errorbar的每个点上,它在数据坐标中的y+err\u p和y-err\u n处做一个标记。log比例作为从数据空间->屏幕

让我们假设我有一个错误Sx的数据x,我想用方法errorbar绘制它。现在我想知道如果我重新缩放到对数刻度会发生什么,它会正确地执行错误吗?错误传播应该停止

f(x)=对数(x)

=>Sf=| Sx/x|

我可以想象matplotlib就是这样

Sf=对数Sx

这是完全错误的。那么,matplotlib实际在做什么呢?

errorbar的工作方式是(或多或少)在您想要绘制errorbar的每个点上,它在数据坐标中的
y+err\u p
y-err\u n
处做一个标记。
log
比例作为从数据空间->屏幕空间转换的一部分应用


对于绘图库来说,这无疑是正确的做法。您似乎想要的是通过一些计算传播错误,这些计算需要知道计算是什么(这样您就可以得到所有部分),而不是mpl所处的业务。也许你可以看看《辛普森》

的确,它也让我感到困惑。假设我有一个包含一组数据的文件:

xi,yi(xi),sigma(yi);i=1,2,…,N

其中,σ(yi)是yi(xi)的一个标准误差。现在,假设我使用matplotlib绘制此数据,其中x比例和y比例都是线性的。当然,y轴上的标记将是一个在yi(xi)-sigma(yi)处,另一个在yi(xi)+sigma(yi)处。它们的区别是sigma(yi)

问题是,如果我

ax.设置刻度(“对数”)

那么,我会看到log10(y)轴上的标记是log10(yi(xi)-sigma(yi))和log10(yi(xi)+sigma(yi))上的标记吗

然而,上述错误是不正确的,因为log10(yi(xi))的错误肯定不仅仅是log10(sigma(yi)),而是必须通过

西格玛(log10(yi))=log10(e)*|西格玛(yi)/yi|


那么,有人知道吗,在以对数y比例绘制yerrorbars数据时会进行错误传播吗?

很抱歉,但你弄错了我的问题:我不想传播多个部分的错误,因为只有一个部分!如果我使用ax.set_yscale(“log”),我唯一想要的是正确的错误。对,在log scale上绘制函数和绘制函数的日志是不同的事情。第一个只影响数据的绘制方式,第二个是数据处理步骤。也许你是对的,但事实上我只想用正确的错误条在对数刻度上绘制数据,基本上,缩放也应该是数据处理步骤。这当然也是我要问的。错误传播不是也不应该由绘图库完成。当您将刻度设置为“记录”时,数据和错误的值不会改变,错误条仍在
y+sigma
y-sigma
处绘制。在对数y比例上绘制
f(x)
与在线性y比例上绘制
log(f(x))
不同(即使曲线“看起来”相同)。