sns.regplot()
—— 回归拟合散点图(Regression Plot)
seaborn.regplot()
用于绘制 带回归拟合线(Regression Line) 的 散点图(Scatter Plot),适用于 探索数值变量之间的关系,并查看 趋势或相关性。
1. 语法
import seaborn as sns
sns.regplot(data=None, x=None, y=None, scatter=True, fit_reg=True, ci=95, color=None, line_kws=None)
主要参数
参数 | 作用 |
---|---|
data | DataFrame 数据集 |
x | X 轴数值变量 |
y | Y 轴数值变量 |
scatter | 是否绘制散点(默认 True ) |
fit_reg | 是否绘制回归线(默认 True ) |
ci | 置信区间(默认 95% ) |
color | 颜色 |
line_kws | 控制回归线样式(如 {"color": "red", "linewidth": 2} ) |
2. 基本用法
2.1 画回归拟合散点图
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
data = sns.load_dataset("penguins")
# 绘制回归拟合散点图
sns.regplot(data=data, x="flipper_length_mm", y="body_mass_g")
plt.title("Penguin Flipper Length vs Body Mass")
plt.show()
📌 说明
x="flipper_length_mm"
→ 企鹅的鳍长。y="body_mass_g"
→ 企鹅体重。- 蓝色阴影区域 是 95% 置信区间。
2.2 关闭置信区间
sns.regplot(data=data, x="flipper_length_mm", y="body_mass_g", ci=None)
plt.show()
📌 ci=None
关闭置信区间,仅显示回归线。
2.3 仅显示回归线(去掉散点)
sns.regplot(data=data, x="flipper_length_mm", y="body_mass_g", scatter=False)
plt.show()
📌 作用
scatter=False
只显示趋势线(适用于大数据量)。
3. 进阶用法
3.1 按类别分类(hue
用 sns.lmplot()
代替)
regplot()
不支持 hue
,如果要按类别区分颜色,需要用 lmplot()
:
sns.lmplot(data=data, x="flipper_length_mm", y="body_mass_g", hue="species")
plt.show()
📌 hue="species"
不同种类不同颜色。
3.2 调整回归线颜色
sns.regplot(data=data, x="flipper_length_mm", y="body_mass_g", line_kws={"color": "red", "linewidth": 2})
plt.show()
📌 作用
line_kws={"color": "red", "linewidth": 2}
调整回归线颜色和粗细。
3.3 多项式回归(order
参数)
regplot()
默认是 线性回归,可以通过 order
进行 多项式回归:
sns.regplot(data=data, x="flipper_length_mm", y="body_mass_g", order=2)
plt.show()
📌 order=2
进行二次回归拟合(曲线回归)。
3.4 仅部分数据(truncate=False
)
sns.regplot(data=data, x="flipper_length_mm", y="body_mass_g", truncate=False)
plt.show()
📌 作用
truncate=False
让回归线延伸到 X 轴范围外。
4. sns.regplot()
vs sns.lmplot()
sns.regplot() | sns.lmplot() | |
---|---|---|
hue 分类 | ❌ 不支持 | ✅ 支持 |
适用场景 | 单个回归分析 | 多个类别回归 |
适用于 | 统计分析、EDA | 分类别对比回归 |
5. 总结
✅ sns.regplot()
适用于 查看两个数值变量的回归趋势。
✅ 常见参数
scatter=False
只显示回归线,ci=None
取消置信区间。order=2
多项式回归,truncate=False
让回归线延伸。