sns.kdeplot()
—— 核密度估计(KDE)图
seaborn.kdeplot()
用于 可视化数据的概率密度分布,通过 核密度估计(KDE, Kernel Density Estimation) 生成平滑曲线,适用于 数据分布分析。
1. 语法
import seaborn as sns
sns.kdeplot(data=None, x=None, y=None, hue=None, fill=False, bw_adjust=1, levels=10, cmap=None, shade=None)
主要参数
参数 | 作用 |
---|---|
data | DataFrame 数据集 |
x | 需要绘制 KDE 的数值变量 |
y | 绘制 2D KDE(二维密度图) |
hue | 按类别分色 |
fill | 是否填充密度曲线 |
bw_adjust | 调整平滑度(>1 更平滑,<1 更尖锐) |
levels | 2D KDE 轮廓线数量 |
cmap | 颜色映射 |
shade | 旧版本 fill 参数 |
2. 单变量 KDE(1D)
2.1 绘制 KDE 曲线
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
data = sns.load_dataset("penguins")
# 绘制 KDE 图
sns.kdeplot(data=data, x="flipper_length_mm")
plt.title("Flipper Length KDE")
plt.show()
📌 作用
- 平滑展示
flipper_length_mm
的分布。
2.2 填充 KDE 曲线(fill=True
)
sns.kdeplot(data=data, x="flipper_length_mm", fill=True)
plt.show()
📌 作用
fill=True
填充密度曲线,更直观。
2.3 按类别绘制 KDE(hue
参数)
sns.kdeplot(data=data, x="flipper_length_mm", hue="species", fill=True)
plt.show()
📌 作用
hue="species"
→ 不同物种绘制不同的 KDE 曲线。
2.4 调整 KDE 平滑度(bw_adjust
参数)
sns.kdeplot(data=data, x="flipper_length_mm", fill=True, bw_adjust=0.5) # 变窄
sns.kdeplot(data=data, x="flipper_length_mm", fill=True, bw_adjust=2) # 变宽
plt.show()
📌 作用
bw_adjust=0.5
→ 分布更尖锐。bw_adjust=2
→ 分布更平滑。
—
3. 二维 KDE(2D)
3.1 绘制 2D KDE
sns.kdeplot(data=data, x="flipper_length_mm", y="body_mass_g")
plt.show()
📌 作用
- 查看
flipper_length_mm
与body_mass_g
的联合分布。
3.2 颜色填充(fill=True
)
sns.kdeplot(data=data, x="flipper_length_mm", y="body_mass_g", fill=True, cmap="Blues")
plt.show()
📌 作用
fill=True
填充颜色,cmap="Blues"
选择颜色方案。
3.3 轮廓线数量(levels
参数)
sns.kdeplot(data=data, x="flipper_length_mm", y="body_mass_g", levels=20)
plt.show()
📌 作用
levels=20
增加等高线密度。
4. sns.kdeplot()
vs sns.histplot()
sns.kdeplot() | sns.histplot() | |
---|---|---|
作用 | 估计概率密度分布 | 直方图(离散分布) |
适用场景 | 平滑数据分布 | 观察数据频率 |
是否适用于分类数据 | ❌ 否 | ✅ 可以 |
sns.histplot(data=data, x="flipper_length_mm", kde=True)
plt.show()
📌 推荐
- 观察数据分布形态 →
kdeplot()
- 数据频率分析 →
histplot()
5. 总结
✅ sns.kdeplot()
适用于查看数据分布的平滑曲线,支持 1D 和 2D KDE。
✅ 常见参数
fill=True
填充密度曲线,bw_adjust
控制平滑度。hue
按类别分类,levels
调整 2D 轮廓线数量。