Jupyter中matplotlib绘制的散点图与线性回归线无法叠加显示
问题解决方案
问题原因
你给出的代码逻辑本身是支持散点和回归线叠加显示的,出现二者分开显示的问题通常是两种原因:
- 你把
plt.scatter()和plt.plot()两行代码放在了不同的Jupyter单元格单独执行,每次执行绘图语句都会生成新的画布 - 你的X轴数据是无序的,导致
plt.plot()绘制出来的是杂乱折线,被你误认为是单独的回归线图像
修复方案
方案1:调整现有代码执行逻辑+优化适配
把所有绘图相关代码放在同一个单元格执行,同时如果X是无序的,额外增加排序步骤,避免折线异常:
%matplotlib inline import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression import numpy as np # 新增用于排序 linear_regressor = LinearRegression() X = fish_df.iloc[:,2].values.reshape(-1,1) Y = fish_df.iloc[:,4].values.reshape(-1,1) linear_regressor.fit(X, Y) # 新增:对X排序后再做预测,保证回归线是连续直线 X_sorted = np.sort(X, axis=0) Y_pred = linear_regressor.predict(X_sorted) # 所有绘图语句在同一段代码内执行 plt.scatter(X,Y, color="green") plt.plot(X_sorted, Y_pred, color="red") plt.show()
方案2:使用seaborn的regplot一键生成带回归线的散点图
如果不想自己写线性回归逻辑,可直接用seaborn封装好的接口,代码更简洁:
%matplotlib inline import seaborn as sns import matplotlib.pyplot as plt sns.regplot(x=fish_df.iloc[:,2], y=fish_df.iloc[:,4], color='green', line_kws={'color': 'red'}) plt.show()
内容的提问来源于stack exchange,提问作者Karthik
相关产品推荐
相关产品推荐

