如何拟合数据,然后从拟合函数中抽样绘制曲线

时间:2017-02-24 10:08:55

标签: python matplotlib plot regression

给定两个数组x和y,我试图使用np.polyfit函数来拟合数据,使用以下方法:

z = np.polyfit(x, y, 20)
f = np.poly1d(z)

但是因为我想绘制折线而不是平滑曲线,所以我使用这个函数f来采样数组以绘制线条。

x_new = np.linspace(x[0], x[-1], fitting_size)
y_new = np.zeros(fitting_size)
for t in range(fitting_size):
   y_new[t] = f(x_new[t])

plt.plot(x_new, y_new, marker='v', ms=1)

问题是上面的段代码仍然给我一个平滑的曲线。我该如何解决?感谢。

1 个答案:

答案 0 :(得分:2)

不幸的是,问题背后的意图有点不清楚。但是,如果要执行线性拟合,则需要向deg=1提供polyfit度。没有理由从合适中抽样;可以简单地使用相同的输入数组并将拟合函数应用于它。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,5,20)
y = 3*x**2+np.random.rand(len(x))*10

z = np.polyfit(x, y, 1)
f = np.poly1d(z)

z2 = np.polyfit(x, y, 2)
f2 = np.poly1d(z2)


plt.plot(x,y, marker=".", ls="", c="k", label="data")
plt.plot(x, f(x), label="linear fit")
plt.plot(x, f2(x), label="quadratic fit")
plt.legend()
plt.show()

enter image description here