You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Matplotlib图表比例缩小问题,实现目标薪资vs职位可视化?

问题:Matplotlib图表比例调整及回归曲线优化

我在用Matplotlib绘制薪资vs职位的线性回归图表时,遇到了图表比例不符合预期的问题,当前使用的代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

dataset = pd.read_csv('Position_Salaries.csv')

X = dataset.iloc[: , 1:2].values
y = dataset.iloc[: , 2:3].values

from sklearn.linear_model import LinearRegression

l_regressor = LinearRegression()
l_regressor.fit(X, y)

from sklearn.preprocessing import PolynomialFeatures

p_regressor = PolynomialFeatures(degree = (0,5))

X_poly = p_regressor.fit_transform(X)

lp_regressor = LinearRegression()

lp_regressor.fit(X_poly, y)

plt.scatter(X, y, color='red')

plt.plot(X, l_regressor.predict(X), color='blue')

plt.title('Salary vs Position (Linear Reg)')

plt.xlabel('Position')

plt.ylabel('Salary')

plt.show()

当前输出图表:
当前输出图表

期望得到的目标样式输出:
目标输出图表


解决步骤及修正代码

要达到目标样式,需要从代码错误修正、图表比例调整、回归曲线优化三个方面修改:

  1. 修正多项式回归参数错误
    原代码中PolynomialFeatures(degree=(0,5))是错误写法,degree参数需传入单个整数表示多项式最高次幂,这里改为degree=5。

  2. 调整图表比例
    使用plt.figure(figsize=(宽度, 高度))设置画布尺寸,让图表宽高比贴合目标样式。

  3. 绘制平滑的多项式回归曲线
    目标图显示的是多项式回归曲线而非线性直线,需生成更密集的X值,避免曲线出现折线感。

修正后的完整代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

dataset = pd.read_csv('Position_Salaries.csv')

X = dataset.iloc[:, 1:2].values
y = dataset.iloc[:, 2:3].values

# 训练线性回归模型(保留用于对比)
l_regressor = LinearRegression()
l_regressor.fit(X, y)

# 修正多项式特征生成参数
p_regressor = PolynomialFeatures(degree=5)
X_poly = p_regressor.fit_transform(X)

# 训练多项式回归模型
lp_regressor = LinearRegression()
lp_regressor.fit(X_poly, y)

# 设置画布尺寸,调整图表比例
plt.figure(figsize=(8, 6))

# 绘制原始数据散点
plt.scatter(X, y, color='red')

# 生成密集X值,让曲线更平滑
X_grid = np.arange(min(X), max(X), 0.1)
X_grid = X_grid.reshape((len(X_grid), 1))

# 绘制多项式回归曲线
plt.plot(X_grid, lp_regressor.predict(p_regressor.transform(X_grid)), color='blue')

# 修改标题和坐标轴标签,匹配目标图
plt.title('Salary vs Position (Polynomial Regression)')
plt.xlabel('Position Level')
plt.ylabel('Salary')

plt.show()

内容的提问来源于stack exchange,提问作者Om Shukla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:24:48