sns.jointplot()
—— 联合分布图(Joint Distribution Plot)
seaborn.jointplot()
用于 可视化两个数值变量的联合分布,同时显示 散点图、直方图、核密度估计(KDE)等,适用于 变量关系探索(EDA)。
1. 语法
import seaborn as sns
sns.jointplot(data=None, x=None, y=None, kind="scatter", hue=None, marginal_kws=None)
主要参数
参数 | 作用 |
---|---|
data | DataFrame 数据集 |
x | X 轴变量(数值) |
y | Y 轴变量(数值) |
kind | 绘图类型("scatter" 、"hist" 、"kde" 、"hex" 、"reg" ) |
hue | 按类别分色 |
marginal_kws | 额外控制边缘图(如 bins ) |
2. kind
参数(支持的图表类型)
kind | 作用 |
---|---|
"scatter" | 散点图(默认) |
"hist" | 直方图(2D 直方图) |
"kde" | 核密度估计(KDE) |
"hex" | 六边形分布(适用于大数据) |
"reg" | 回归散点图(带回归线) |
3. 基本示例
3.1 kind="scatter"
(默认:散点图 + 直方图)
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
data = sns.load_dataset("penguins")
# 画联合分布图
sns.jointplot(data=data, x="flipper_length_mm", y="body_mass_g")
plt.show()
📌 说明
- 中心:散点图
- 上方/右侧:直方图
- 用于观察变量关系和分布
3.2 kind="hist"
(2D 直方图 + 边缘直方图)
sns.jointplot(data=data, x="flipper_length_mm", y="body_mass_g", kind="hist")
plt.show()
📌 作用
- 中间区域显示 2D 直方图(颜色深度表示密度)。
- 适用于 大数据可视化。
3.3 kind="kde"
(核密度估计)
sns.jointplot(data=data, x="flipper_length_mm", y="body_mass_g", kind="kde")
plt.show()
📌 作用
- 中间:二维 KDE(等高线密度图)。
- 边缘:KDE 曲线(替代直方图)。
3.4 kind="hex"
(六边形分布)
sns.jointplot(data=data, x="flipper_length_mm", y="body_mass_g", kind="hex")
plt.show()
📌 作用
kind="hex"
适用于大数据,避免散点图点重叠问题。
3.5 kind="reg"
(回归散点图 + 直方图)
sns.jointplot(data=data, x="flipper_length_mm", y="body_mass_g", kind="reg")
plt.show()
📌 作用
kind="reg"
在散点图上加回归线,适用于 变量趋势分析。
4. 进阶用法
4.1 按类别分类(hue
参数)
sns.jointplot(data=data, x="flipper_length_mm", y="body_mass_g", hue="species")
plt.show()
📌 作用
hue="species"
→ 不同物种用不同颜色。
4.2 调整边缘图参数(marginal_kws
)
sns.jointplot(data=data, x="flipper_length_mm", y="body_mass_g", kind="hist", marginal_kws={"bins": 20})
plt.show()
📌 作用
marginal_kws={"bins": 20}
→ 控制边缘直方图的bins
。
5. sns.jointplot()
vs sns.pairplot()
sns.jointplot() | sns.pairplot() | |
---|---|---|
显示关系 | 2 个变量 | 多个变量 |
支持 hue 分类 | ✅ | ✅ |
适用于 | 单个变量对分析 | 多变量探索 |
sns.pairplot(data=data, hue="species")
plt.show()
📌 推荐
- 2 变量关系 →
jointplot()
- 多个变量分析 →
pairplot()
6. 总结
✅ sns.jointplot()
适用于两个数值变量的联合分布可视化。
✅ 常见参数
kind="scatter"
(默认),kind="hist"
(2D 直方图),kind="kde"
(密度估计)。hue
按类别分类,marginal_kws
控制边缘图参数。