Spyder环境下Python线性回归拟合曲线无法显示求助
求助:Spyder中Matplotlib线性回归曲线无法显示问题
原本打算给同事展示Python对比Excel的优势,结果在Spyder环境里用Matplotlib绘制线性回归拟合曲线时,曲线始终无法显示。尝试了plt.plot、plt.axline等多种实现方式,相关代码如下,希望能帮忙排查原因:
plt.figure('example') slope, intercept, r, p, std_err = stats.linregress(values1, values3) def myfunc(x): return slope * x + intercept mymodel = list(map(myfunc, values1)) plt.scatter(values1, values3) #plt.plot(values1, mymodel) #plt.axline([xy1=(0, intercept), slope=slope, label=f'$y = {slope:.1f}x {intercept:+.1f}$']) #plt.plot(values1, mymodel, 'r', label='y={:.2f}x+{:.2f}'.format(slope,intercept)) plt.plot(values1, mymodel, 'r', label='y={:.2f}x+{:.2f}'.format(slope,intercept)) #plt.axline(xy1, kwargs) plt.axline plt.xlabel('time [hh:mm]') plt.ylabel(desired_value1) #plt.axline(xy1=(0, intercept), slope=slope, label=f'$y = {slope:.1f}x {intercept:+.1f}$') plt.show()
排查方向建议
- 检查x轴数据是否有序:
plt.plot绘制折线时,若x轴数据(values1)是乱序的,线条会来回交叉,看起来像未显示或杂乱无章。可以先对x和对应y数据排序后再拟合绘图:# 按x轴数据排序 sorted_pairs = sorted(zip(values1, values3)) sorted_x, sorted_y = zip(*sorted_pairs) # 重新计算回归参数 slope, intercept, r, p, std_err = stats.linregress(sorted_x, sorted_y) mymodel = [slope * x + intercept for x in sorted_x] # 绘图 plt.scatter(sorted_x, sorted_y) plt.plot(sorted_x, mymodel, 'r', label='y={:.2f}x+{:.2f}'.format(slope,intercept)) - 调整Spyder的Matplotlib后端设置:打开Spyder的「工具>偏好设置>IPython控制台>图形」,将后端改为"Automatic"或"Qt5Agg",重启Spyder后再运行代码。后端配置错误是Spyder中图像不显示的常见原因。
- 删除无效代码:代码中单独的
plt.axline是无效调用,既没有传参也没有执行,直接删掉这一行。 - 检查数据完整性:确认
values1和values3中没有NaN、无穷大等异常值,这些会导致拟合或绘图失败。可以用print(np.isnan(values1).any())和print(np.isnan(values3).any())检查是否存在缺失值。 - 确认程序执行到plt.show():在
plt.show()前添加print("准备显示图像"),运行代码后看控制台是否输出这句话,排查是否在绘图前程序就已中断。
内容的提问来源于stack exchange,提问作者K S
相关产品推荐
相关产品推荐

