使用polyval和polyfit在半对数图表上绘制线性回归

时间:2014-02-20 14:22:08

标签: python numpy matplotlib

我正在使用matplotlib + numpy使用polyfit和polyval函数生成线性回归

lateReg = np.polyfit(x=xm,y=mcherryp,deg=1)
ax1.plot(xm, np.polyval(lateReg,xm), 'r-')
earlyReg = np.polyfit(xv,venusp,deg=1)
ax1.plot(xv, np.polyval(earlyReg,xv), 'g-')

但是,由于我的x轴是log,因此这些线看起来不是非常线性的。 This site说我可以 只需使用y=m*log(x)+b,我的行将再次线性,但我不确定如何使用我的代码(我想使用这些函数而不是手动执行)。有任何想法吗?它是如此简单:

ax1.plot(log(xm), np.polyval(lateReg,xm), 'r-')

谢谢!

1 个答案:

答案 0 :(得分:3)

假设您的数据在semilog图上看起来像一条直线,则需要

p = np.polyfit(np.log(xm), mcherryp, 1)
ax1.semilogx(xm, p[0] * np.log(xm) + p[1], 'r-')

在这种情况下,以及loglog案例中,我通常认为polyval没用。