Python 2.7中为DataFrame散点图添加简单拟合回归线的最简方法
给Python 2.7散点图添加拟合回归线的最简实现方法
嘿,给你的散点图加拟合回归线其实超简单,用numpy自带的polyfit和polyval工具就行——不用额外装第三方库,毕竟Python 2.7环境里numpy基本是和matplotlib配套使用的。
直接给你修改后的完整代码,关键部分我会标注清楚:
import numpy as np import matplotlib.pyplot as plt # 你的原有绘图代码 df2 = myReport.loc[:, ['Quantity']] print(df2) plt.plot(df2, linestyle="", marker="." ) plt.axis([0,45,5023203,5938119]) plt.grid(True) plt.legend(df2.columns) plt.ylabel ('Population') plt.xlabel ('Timeline') # --- 新增的拟合回归线代码 --- # 生成x轴数据:这里假设你的Timeline是从0开始的序列(对应df2的索引) # 如果Timeline是单独的列,直接替换成 myReport['Timeline'] 即可 x = np.arange(len(df2)) # 计算一次线性拟合的系数(参数1代表线性拟合,想做高次拟合改这个数字就行) fit_coeffs = np.polyfit(x, df2['Quantity'], 1) # 生成拟合线的y值 y_fit = np.polyval(fit_coeffs, x) # 绘制拟合线,用红色实线和散点区分,加个标签方便图例显示 plt.plot(x, y_fit, linestyle="-", color="red", label="Linear Fit") # 更新图例,把拟合线的标签加进去 plt.legend() plt.show()
几点小说明:
- 如果你的Timeline不是索引,而是DataFrame里单独的一列,直接把
x = np.arange(len(df2))改成x = myReport['Timeline']就行,适配你的实际数据结构。 np.polyfit的第三个参数是拟合的多项式次数,1对应线性回归,要是你需要二次/三次拟合,改成2/3就行,不过线性拟合是最常用的场景。- 拟合线的样式(颜色、线型)可以自己调整,比如把
color="red"改成color="blue",linestyle="-"改成linestyle="--"(虚线),让图表更美观。
内容的提问来源于stack exchange,提问作者dunkerkboy
相关产品推荐
相关产品推荐

