Matplotlib semilog图最佳拟合线

时间:2017-04-28 14:37:33

标签: python matplotlib

下面(蓝色虚线)是我尝试对数据进行线性回归时得到的结果。它看起来很不对(但也许它是正确的?)这是图像(不允许我嵌入):

http://i.imgur.com/KiprZDB.png

这是代码:

mm, cs, err = get_cols(data)
a = np.asarray(mm, dtype=float)
b = np.asarray(cs, dtype=float)
ax.errorbar(a, b, xerr=None, yerr=err, fmt='o', c='b', label='Detection Rate')
logB = np.log10(b)
m, y0 = np.polyfit(a, logB, 1)
ax.plot(a, np.exp(a*m+y0), '--')

1 个答案:

答案 0 :(得分:0)

默认情况下,matplotlib的对数比例使用基数10的对数。因此,使用np.log10(b)转换数据进行拟合是有意义的。

但是,一旦完成拟合,就需要使用变换函数的逆转换数据。

如果y = log10(x),则反转为x = 10**(y),而
y = log(x)的情况下,逆是x = exp(y)

所以你需要决定其中一个案例。