当前位置: 首页 > news >正文

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

相关文章:

  • 跨系统投屏:Realme手机(远程)投屏到Linux系统的简单方法
  • winx64 安装对应版本火狐浏览器驱动
  • 图生生AI修图,用“画面扩充“重构创作想象
  • 基于FPGA的3U机箱温度采集板PT100,应用于轨道交通/电力储能等
  • 如何在 Github 上获得 1000 star?
  • AI预测体彩排3新模型百十个定位预测+胆码预测+杀和尾+杀和值2025年3月18日第22弹
  • 如何把视频转成动态图?
  • 调试 Rust + WebAssembly 版康威生命游戏
  • 【JavaEE】Mybatis 简单启动
  • 技术革命、需求升级与商业生态迭代——基于开源AI大模型与智能商业范式的创新研究
  • Batch Norm和Layer Norm
  • 《论语别裁》第01章 学而(29) 《三国演义》的幕后功劳
  • ubuntu20.04关机进程阻塞解决方法
  • 3.17BUUCTF练习day1
  • MySQL 客户端连不上(1045 错误)原因全解析
  • 项目实战:基于瑞萨RA6M5构建多节点OTA升级-创建工程MCUBoot<二>
  • el-table的向上移动向下移动,删除选定行
  • 【Git学习笔记】Git分支管理策略及其结构原理分析
  • 探秘Transformer系列之(15)--- 采样和输出
  • 小程序API —— 53 本地存储
  • 秦洪看盘|交易新逻辑,银行股成A股稳定器
  • 习近平致电祝贺阿尔巴尼斯当选连任澳大利亚总理
  • 尊严的代价:新加坡福利体系下的价值困境
  • 英媒:英国首相住所起火,目前无人伤亡
  • 教育部基础教育教指委:小学阶段禁止学生独自使用开放式内容生成功能
  • 消费维权周报|上周涉手机投诉较多,涉拍照模糊、屏幕漏液等