使用python seaborn创建配对图:从核心概念到实战案例

Seaborn 的 配对图(Pairplot)
是一种用于探索多变量数据关系的可视化工具,尤其适合分析数据集中多个特征之间的相关性、分布模式或异常值。本文介绍如何生成数据集数值变量之间的配对图,并通过参数设置色系。

在这里插入图片描述

配对图的核心作用

  1. 矩阵式可视化
    • 生成一个 N×N 的网格图(N 为特征数),每个单元格展示两列特征之间的关系。
    • 默认对角线显示单变量分布(直方图或 KDE 曲线),非对角线显示散点图或其他关系图。
  2. 快速发现模式
    • 直观呈现变量间的线性/非线性关系、聚类趋势或异常值。
    • 例如:身高与体重的强正相关、性别在不同变量中的分布差异。
  3. 适用场景
    • 数据预分析、特征工程、探索性数据分析(EDA)。
    • 适用于小规模数据集(样本量 < 1000)。
      在这里插入图片描述

基本示例

首先安装必要的依赖:

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')

在这里插入图片描述

通过使用色调参数,我们可以在图中做出以下改变:

  • 散点图中的点是基于团队值的颜色。
  • 重叠密度曲线用于可视化每个独特团队的值分布。

注意,还会自动添加一个图例,以便我们知道哪些颜色对应于哪些团队值。

高级技巧

1. 分面图(Faceting)

结合 row/col 参数按某变量分面,细化分析:

sns.pairplot(tips, hue="smoker", row="time", col="day")

2. 仅显示部分变量

通过 vars 参数选择特定列:

sns.pairplot(tips, vars=["total_bill", "tip", "size"], hue="sex")

3. 控制图例位置

使用 legend 参数调整图例位置:

sns.pairplot(tips, hue="sex", legend_out=True)  # 放置在图形外
plt.legend(bbox_to_anchor=(1.05, 1))            # 定位到右侧外部

注意事项

  1. 数据量限制
    • 配对图在样本量大(>1000)时可能过于密集,建议使用采样或降维方法(如 PCA)。
  2. 颜色对比度
    • 避免使用亮度或饱和度过低的颜色,确保不同类别可区分。
  3. 图例简洁性
    • 类别过多时,可合并少量类别(如 “Other”)或改用其他编码方式(如形状)。

完整示例

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 的配对图功能,结合色系设计,可以高效揭示数据的多维特征和隐藏规律。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值