让我们假设我有一个错误Sx的数据x,我想用方法errorbar绘制。现在我想知道如果我重新缩放到对数刻度会发生什么,它是否正确地执行了错误?错误传播应该
f(x)= log(x)
=> Sf = | Sx / x |
我可以想象matplotlib只是
Sf = log Sx
这将是完全错误的。那么,matplotlib究竟在做什么呢?
答案 0 :(得分:2)
确实,它也让我感到困惑。想象一下,我有一个包含一组数据的文件:
xi,yi(xi),sigma(yi); I = 1,2,...,N
其中sigma(yi)是yi(xi)的一个标准误差。现在,假设我使用matplotlib绘制此数据,其中x-scale和y-scale都是线性的。当然,y轴上的标记在yi(xi) - sigma(yi)处为1,在yi(xi)+ sigma(yi)处为另一个。它们的区别在于sigma(yi)。
问题是,如果我设置
ax.set_yscale("登录&#34)
那么,我会看到log10(y)轴上的标记是log10(yi(xi)-sigma(yi)),而另一个是log10(yi(xi)+ sigma(yi))?
但是,上述错误不正确,因为log10(yi(xi))的错误当然不仅仅是log10(sigma(yi)),而是必须通过<error propagation来实现/ p>
sigma(log10(yi))= log10(e)* | sigma(yi)/ yi |
那么,是否有人知道,在使用yerrorbars以log y比例绘制数据时是否会进行错误传播?
答案 1 :(得分:1)
错误栏的工作方式(或多或少)在您想要绘制errobar的每个点处,它在数据坐标中的y + err_p
和y - err_n
处放置标记。 log
比例作为数据空间转换的一部分应用 - &gt;屏幕空间。
这对于绘图库来说是非常明确的正确的事情。你似乎想要的是通过一些计算来传播错误,这些计算需要知道计算是什么(所以你可以获得所有的部分)并且不是业务mpl所在。也许看看sympy
。