我正在使用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-')
谢谢!
答案 0 :(得分:3)
假设您的数据在semilog图上看起来像一条直线,则需要
p = np.polyfit(np.log(xm), mcherryp, 1)
ax1.semilogx(xm, p[0] * np.log(xm) + p[1], 'r-')
在这种情况下,以及loglog案例中,我通常认为polyval
没用。