关于 alterlab-seaborn
面向使用 Python 和 pandas DataFrame 的数据分析者,提供 Seaborn 统计可视化指导。涵盖多类图表、统计估计和分面布局,并可结合 matplotlib 微调。
主要功能
- 01关系、分布与分类图
- 02回归与矩阵可视化
- 03分面及多面板布局
- 04语义映射与统计估计
- 05配色、主题及 matplotlib 定制
适用场景
- 01探索 DataFrame 中变量的关系
- 02比较不同类别的数据分布
- 03生成相关性热图或回归图
- 04制作适用于出版的多面板图
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-seaborn安装后在 Claude Code 中输入/alterlab-seaborn确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/best_practices_and_troubleshooting.mddata_palettes_theming.mdexamples.mdfunction_reference.mdobjects_interface.mdplotting_functions.md详细介绍
Seaborn 统计可视化
概述
Seaborn 是一个 Python 可视化库,用于创建适合发表的统计图形。使用此技能,可通过最少的代码进行面向数据集的绘图、多变量分析、自动统计估算和复杂的多面板图形。
何时使用此技能
当你想直接使用 pandas DataFrame 快速创建美观的统计图形时,可使用 seaborn:分布图、关系图、分类比较、相关性热力图和分面小图。
不适用的场景
| 场景 | 改用 |
|---|---|
| 带有悬停、缩放功能的交互式图表,或 HTML 仪表板 | alterlab-plotly |
| 精确的期刊/论文样式(栏宽、点字体、CMYK、矢量导出) | alterlab-scientific-viz |
| 对单个图形元素或超出 FacetGrid/PairGrid 范围的布局进行底层控制 | alterlab-matplotlib(seaborn 的坐标轴级绘图支持通过 ax= 实现此操作) |
| 针对数据文件的完整探索性数据分析报告(结构、质量、汇总统计) | alterlab-eda |
| 选择并执行比较背后的统计检验 | alterlab-statistical-analysis |
设计理念
- 面向数据集 — 直接使用 DataFrame 和命名变量,而非抽象坐标。
- 语义映射 — 自动将数据值映射到视觉属性(颜色、大小、样式)。
- 统计感知 — 内置聚合、误差估算和置信区间。
- 美观的默认样式 — 开箱即用的适合发表的主题和调色板。
- Matplotlib 集成 — 需要时可与 matplotlib 自定义功能完全兼容。
快速入门
示例适用于 seaborn ≥ 0.13(已在 0.13.2 上验证;截至 2026 年 9 月,这仍是当前版本)。此版本有两个容易踩坑的 API 要点:只有同时使用 hue= 时才能传入 palette=(不带 hue 的 palette 已弃用,计划在 v0.14 中移除);设置误差线样式时应使用 err_kws={...},而不是已弃用的 errcolor/errwidth/scale/join 关键字(计划在 v0.15 中移除)。
在 matplotlib 3.11 中,所有绘图函数仍可正常使用,但 boxplot(以及 catplot(kind="box"))会发出 vert MatplotlibDeprecationWarning,heatmap 则会发出 set_bad PendingDeprecationWarning。这两种警告都来自 seaborn 内部,目前无害;matplotlib 3.13 计划移除 vert,因此在 seaborn 发布修复版本之前,依赖 sns.boxplot 的环境应将 matplotlib 固定为 matplotlib<3.13。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.show()
核心工作流
- 整理数据为长格式(“整洁”格式)——每个变量一列,每个观测一行。这适用于所有 seaborn 函数。使用
df.melt(...)重塑宽格式数据。参见references/data_palettes_theming.md。 - 根据变量类型选择绘图类别(参见下方的选择指南)。
- 使用
hue、size、style语义映射编码额外维度。 - 选择坐标轴级或图形级绘图:坐标轴级(
scatterplot、boxplot、heatmap等)可通过ax=嵌入自定义 matplotlib 布局;图形级(relplot、displot、catplot、lmplot等)管理整个图形,并通过col/row创建分面。 - 使用
set_theme/set_context设置主题,并通过savefig(dpi=300, bbox_inches='tight')保存(矢量图使用 PDF)。
绘图类别路由
选择类别,然后查看 references/plotting_functions.md,了解各类别的参数和代码。
| 目标 | 类别 | 主要函数 |
|---|---|---|
| 变量之间的关系 | 关系图 | scatterplot、lineplot、relplot |
| 分布范围/形状/密度 | 分布图 | histplot、kdeplot、ecdfplot、displot、jointplot、pairplot |
| 跨类别比较 | 分类图 | stripplot、swarmplot、boxplot、violinplot、barplot、pointplot、countplot、catplot |
| 线性关系/残差 | 回归图 | regplot、lmplot、residplot |
| 矩阵/相关性 | 矩阵图 | heatmap、clustermap |
| 自定义多面板网格 | 网格图 | FacetGrid、PairGrid、JointGrid |
现代声明式 seaborn.objects 接口(类似 ggplot2,可组合)最适合复杂的分层绘图或程序化绘图——参见 references/objects_interface.md。
颜色与主题(要点)
- 定性色板适用于类别(
"colorblind"、"deep"、"muted");顺序色板适用于有序数据("rocket"、"viridis");发散色板适用于以某个值为中心的数据("vlag"、"coolwarm",搭配center=0)。 set_theme(style=..., context=..., palette=...);样式包括whitegrid/ticks/…;上下文paper→talk→poster会逐步放大元素尺寸。
完整的色板和主题参考:references/data_palettes_theming.md。
最佳实践(要点)
- 使用 DataFrame 中命名的列绘图(可保留坐标轴标签);分面时使用图形级函数;通过
hue/size/style编码额外维度。 - 了解每个函数的估算方式:
lineplot/barplot会自动计算均值 + CI——可通过errorbar=和estimator=覆盖。 - 结合 matplotlib(
ax.set(...)、axhline、tight_layout)进行微调;保存时使用dpi=300,发表用图则使用 PDF。
完整的最佳实践、常见模式和故障排查(图例位置、标签重叠、图形尺寸、色板区分度、KDE 带宽):references/best_practices_and_troubleshooting.md。
参考索引
references/plotting_functions.md— 各类图形的参数和代码(关系图、分布图、分类图、回归图、矩阵图、多图网格、图形级与坐标轴级函数)。references/data_palettes_theming.md— 长/宽数据结构、色板(定性/顺序/发散/自定义)和主题(set_theme、样式、上下文)。references/best_practices_and_troubleshooting.md— 最佳实践、常见模式(EDA、出版级图形、多面板、时间序列)和故障排查。references/function_reference.md— 完整的函数签名、参数和示例。references/objects_interface.md— 现代seaborn.objectsAPI 的详细指南。references/examples.md— 基于场景的完整示例和代码模式。