matplotlib

时间:2015-06-26 16:22:51

标签: python matplotlib

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

f(x)= log(x)

=> Sf = | Sx / x |

我可以想象matplotlib只是

Sf = log Sx

这将是完全错误的。那么,matplotlib究竟在做什么呢?

2 个答案:

答案 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_py - err_n处放置标记。 log比例作为数据空间转换的一部分应用 - &gt;屏幕空间。

这对于绘图库来说是非常明确的正确的事情。你似乎想要的是通过一些计算来传播错误,这些计算需要知道计算是什么(所以你可以获得所有的部分)并且不是业务mpl所在。也许看看sympy