Seaborn 的 配对图(Pairplot)
是一种用于探索多变量数据关系的可视化工具,尤其适合分析数据集中多个特征之间的相关性、分布模式或异常值。本文介绍如何生成数据集数值变量之间的配对图,并通过参数设置色系。
首先安装必要的依赖:
pip install pandas seaborn matplotlib
假设我们有如下的pandas DataFrame,它显示了两个不同球队的篮球运动员的得分和助攻:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
'assists': [3, 4, 4, 7, 9, 6, 7, 8, 10, 12],
'points': [5, 6, 9, 12, 15, 5, 10, 13, 13, 19]})
#view DataFrame
print(df)
team assists points
0 A 3 5
1 A 4 6
2 A 4 9
3 A 7 12
4 A 9 15
5 B 6 5
6 B 7 10
7 B 8 13
8 B 10 13
9 B 12 19
如果我们使用pairplot()函数,那么seaborn将使用DataFrame中的两个数值变量创建一个pairplot:
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
#create pairplot
sns.pairplot(data=df)
plt.show()
生成的成对图使用点和辅助变量显示散点图和直方图。
如果我们在pairplot()函数中使用hue参数,我们可以根据team变量的值为图的各个方面上色:
import seaborn as sns
#create pairplot using values of team variable as colors
sns.pairplot(data=df, hue='team')
通过使用色调参数,我们可以在图中做出以下改变:
注意,还会自动添加一个图例,以便我们知道哪些颜色对应于哪些团队值。
结合 row
/col
参数按某变量分面,细化分析:
sns.pairplot(tips, hue="smoker", row="time", col="day")
通过 vars
参数选择特定列:
sns.pairplot(tips, vars=["total_bill", "tip", "size"], hue="sex")
使用 legend
参数调整图例位置:
sns.pairplot(tips, hue="sex", legend_out=True) # 放置在图形外
plt.legend(bbox_to_anchor=(1.05, 1)) # 定位到右侧外部
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
tips = sns.load_dataset("tips")
# 创建配对图:用 'sex' 和 'smoker' 分层着色,自定义调色板
plt.figure(figsize=(12, 8))
sns.pairplot(
tips,
hue="sex",
palette={"Male": "#1f77b4", "Female": "#ff7f0e"},
markers=["^", "s"],
diag_kind="kde",
size=2.5
)
plt.title("Pairplot with Custom Colors and Markers")
plt.legend(bbox_to_anchor=(1.05, 1))
plt.show()
输出效果:每个散点图根据性别用不同颜色和形状标记,对角线显示 KDE 分布,图例独立于主图。
通过灵活运用 Seaborn 的配对图功能,结合色系设计,可以高效揭示数据的多维特征和隐藏规律。