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

Seaborn residplot无法识别scatter_kws中的hue参数问题

解决Seaborn residplot使用hue参数的报错问题

错误原因

你碰到的AttributeError是因为scatter_kws是用来传递给matplotlib底层scatter()函数的参数,而hue是Seaborn特有的分组参数,matplotlib的PathCollection.set()方法并不支持这个参数,所以把hue嵌套进scatter_kws里必然会报错。

正确写法(Seaborn 0.11.0及以上版本)

从Seaborn 0.11.0版本开始,residplot已经原生支持hue参数,不需要放在scatter_kws里,直接作为顶层参数传入即可:

tips = sns.load_dataset("tips")
sns.residplot(data=tips, x="total_bill", y="tip", hue="sex")

旧版本兼容方案(Seaborn低于0.11.0)

如果你的Seaborn版本较旧,还不支持hue参数,可以用以下两种方式实现需求:

方式1:手动计算残差后用scatterplot

先拟合回归模型算出残差,再用支持hue的scatterplot绘制:

import seaborn as sns
from sklearn.linear_model import LinearRegression

tips = sns.load_dataset("tips")
# 拟合线性回归模型计算残差
lr = LinearRegression().fit(tips[["total_bill"]], tips["tip"])
tips["residual"] = tips["tip"] - lr.predict(tips[["total_bill"]])

# 绘制带分组的残差图
sns.scatterplot(data=tips, x="total_bill", y="residual", hue="sex")
# 添加残差参考线
plt.axhline(y=0, color="red", linestyle="--")
plt.show()

方式2:循环分组绘制residplot

遍历sex的不同类别,分别绘制残差图并添加图例:

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
# 按性别分组绘制残差图
for sex in tips["sex"].unique():
    subset = tips[tips["sex"] == sex]
    sns.residplot(data=subset, x="total_bill", y="tip", label=sex)
plt.legend(title="Sex")
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:10:30