Python:散点图的多项式拟合

时间:2019-06-06 17:35:14

标签: python pandas matplotlib regression

我的dataframe有两个专栏,例如xy。下图显示了scatter plotx中的y

基于散点图,我使用以下代码进行线性拟合,该代码在下图中产生蓝色直线。

enter image description here

fig, ax = plt.subplots(nrows=1, ncols=1)
ax.scatter(df['x'], df['y'])
b, m = polyfit(df['x'], df['y'], 1)
ax.plot(df['x'], b + m * df['x'], 'blue', linewidth=1)

现在,我想绘制散点图的另一条拟合曲线,也许是多项式。所需的结果类似于上图中的红色曲线。我尝试使用here中的以下内容。

coefs = np.polyfit(df['x'], df['y'], 2)
p = np.poly1d(coefs)
plt.plot(df['x'], df['y'], "bo", markersize= 2)
plt.plot(df['x'], p(df['x']), "r-")

但是对于我的数据,结果不正确,如下所示。
enter image description here
我应该怎么办?
编辑:数据为here

1 个答案:

答案 0 :(得分:0)

根据Zaraki Kenpachi发布的链接,尝试在现有的拟合和绘图代码之前添加df = df.sort_values(by='x')