sns.swarmplot()
—— 防止重叠的分类散点图(Swarm Plot)
seaborn.swarmplot()
用于显示分类数据的散点分布,同时避免数据点重叠,适用于 数据离散度、类别间比较、小数据集可视化。
1. 语法
import seaborn as sns
sns.swarmplot(data=None, x=None, y=None, hue=None, dodge=False, size=5)
主要参数
参数 | 作用 |
---|---|
data | 数据集(pandas.DataFrame ) |
x | 分类变量(类别列) |
y | 数值变量(连续值) |
hue | 按类别分色 |
dodge | 分开 hue 组(默认 False ) |
size | 数据点大小(默认 5 ) |
2. 基本示例
2.1 画分类散点图
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
data = sns.load_dataset("titanic")
# 绘制 Swarm Plot
sns.swarmplot(data=data, x="class", y="age")
plt.title("Age Distribution by Class")
plt.show()
📌 作用
swarmplot
确保数据点不重叠(适用于小数据集)。
2.2 按类别着色(hue
参数)
sns.swarmplot(data=data, x="class", y="age", hue="sex")
plt.show()
📌 作用
hue="sex"
不同性别用不同颜色表示。
2.3 分开 hue
组(dodge=True
)
sns.swarmplot(data=data, x="class", y="age", hue="sex", dodge=True)
plt.show()
📌 作用
dodge=True
让不同hue
组的点分开。
3. 进阶用法
3.1 调整点大小(size
参数)
sns.swarmplot(data=data, x="class", y="age", size=8)
plt.show()
📌 作用
size=8
增大数据点,适用于小数据集。
3.2 横向展示(orient="h"
)
sns.swarmplot(data=data, x="age", y="class", orient="h")
plt.show()
📌 作用
orient="h"
横向展示数据。
4. sns.swarmplot()
vs sns.stripplot()
sns.swarmplot() | sns.stripplot() | |
---|---|---|
作用 | 防止数据点重叠 | 数据点可能重叠 |
适用场景 | 小数据集 | 大数据集 |
sns.stripplot(data=data, x="class", y="age", hue="sex", jitter=True)
plt.show()
📌 推荐
- 小数据集(避免重叠) →
sns.swarmplot()
- 大数据集(允许重叠) →
sns.stripplot()
5. 总结
✅ sns.swarmplot()
适用于分类数据的散点分布分析,特别是小数据集。
✅ 常见参数
hue
分类着色,dodge=True
分开不同类别,size=8
调整点大小。