# Scipilot Figure Skill

SciPilot Skills 家族成员，负责科研数据可视化, , 但定位不是"画图工具"， 而是"可视化顾问"。先做数据剖析（列类型/样本量/分布/异常值/分组结构/相关性），...

- Repository: https://github.com/Haojae/scipilot-figure-skill (2749 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-06-15
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add Haojae/scipilot-figure-skill --skill scipilot-figure-skill -g -a claude-code -y`
Codex: `npx skills add Haojae/scipilot-figure-skill --skill scipilot-figure-skill -g -a codex -y`
Cursor: `npx skills add Haojae/scipilot-figure-skill --skill scipilot-figure-skill -g -a cursor -y`
Gemini CLI: `npx skills add Haojae/scipilot-figure-skill --skill scipilot-figure-skill -g -a gemini-cli -y`

## Description

SciPilot Skills 家族成员，负责科研数据可视化, , 但定位不是"画图工具"， 而是"可视化顾问"。先做数据剖析（列类型/样本量/分布/异常值/分组结构/相关性）， 再结合用户的论证目标推荐图型，主动拦截科研画图的经典错误（小样本画均值柱掩盖 分布、双 Y 轴、饼图、Y 轴不当截断、rainbow 色图、把分类点连成折线等），最后 产出 Nature / Science / IEEE / Elsevier / PNAS / 中文核心期刊级别的成图。 覆盖纯数据图：折线、柱状、散点、箱线 / 小提琴、热力图、误差棒、分布图（直方 图 / KDE）、相关性矩阵 / 散点矩阵、多面板组合。技术栈 matplotlib + seaborn + SciencePlots（静态）+ plotly（交互）。中英文双语，中文模式自动配置 Noto Sans CJK / Source Han Sans / SimHei 并修复负号方框，支持中文期刊"宋体正文 + Times New Roman 数字"混排。默认色盲安全配色 + 冗余编码 + 灰度预览。出图后做 "视觉自检闭环"：渲染 PNG 预览→程序自检缺字/文字裁切/刻度重叠→AI 读图复核遮盖 与子图对齐→回改重渲，直到通过。 当用户的任务涉及以下任何情况时主动触发：论文配图、科研画图、数据可视化、 不知道用什么图、怎么展示数据、用什么图好、期刊投稿图、figure、出版级图表、 matplotlib、seaborn、plotly、误差棒、显著性标注、色盲安全配色、矢量图导出、 中文论文图表、多面板。**即使用户只是给一批数据问"这个怎么画"或"用什么图 好"，也应使用本技能, , 本技能首要能力是"判断该用什么图"，其次才是绘制。** 不做示意图、流程图、架构图。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# scipilot-figure-skill, 科研数据可视化顾问

> SciPilot Skills 家族成员 | 从数据剖析到出版级成图

## 概述

科研工作者最大的画图痛点往往不是"不会用 matplotlib"，而是"手上一堆数据，不知道该用什么图把结论讲清楚"。本技能的**首要能力是【思考与判断】**，其次才是【绘制】。

具体地, , **永远先思考再画**：
1. 先理解数据再选图, , 拿到数据先做 EDA，用事实驱动图型选择
2. 先想清楚"这张图要论证什么", , 同样数据，不同论点 = 不同图
3. 主动拦截科研画图的经典错误，而不是顺从
4. 维度太多就建议拆图，不硬塞

**只覆盖纯数据图**：折线、柱状、散点、箱线/小提琴、热力图、误差棒、分布图、相关性矩阵、多面板组合。**不做**示意图、流程图、架构图。

## 何时使用

- 用户给了一个 CSV / Excel / DataFrame 说"帮我画一下"或"用什么图好"
- 用户在写论文要插数据图
- 用户已有草图但说"达不到投稿要求"
- 用户提到 Nature / Science / IEEE 等具体期刊
- 用户问"中文论文 matplotlib 出方框怎么办"
- 用户提到误差棒、显著性、色盲、矢量导出、多面板

## 核心工作流（8 步）

**这是本技能与普通画图工具的根本区别, , 不能上来就画**。每一步缺位前一步的成果都不该执行。

### 第 0 步：理解任务

开画前**先搞清楚两件事**：

1. **这张图要论证什么观点 / 回答什么问题？** 同样数据，论点不同图就不同（详见 `references/chart_selection.md` 的"同一批数据、不同论点 → 不同图"小节）
2. **数据在哪里？长什么样？** 文件路径 / 字段含义 / 多少行 / 是否已经清洗

**如果用户没说清论证目标**，主动问一句："你这张图主要想说服读者相信什么？" 或从论文上下文推断并明确告诉用户你的假设。**不要默认"用户知道自己要什么"**。

### 第 1 步：剖析数据

调用 `scripts/profile_data.py`：

```bash
python scripts/profile_data.py data.csv --group group --group condition
```

输出包含：每列类型、样本量、缺失率、连续列的描述统计 + 偏度 + 异常值、分组样本量分布、相关性矩阵、初步图型建议。

不会读这份报告？查 `references/data_profiling.md`。

**重点核对**：
- 列类型识别对不对？（数字 ID 被认成 ordinal 是常见误判）
- 每组 n 是多少？小样本警告？
- 是否高度偏态？是否需要对数轴？

### 第 2 步：选图

**这是顾问职责的核心**。基于第 0、1 步的事实，查 `references/chart_selection.md` 的决策框架决定图型。要点：

- **给出推荐 + 简短理由 + 1-2 个备选**（不要只丢一个选择给用户）
- 如果数据维度过多（如分组组合 > 12）→ **明确建议拆图**，而不是硬塞
- 如果用户指定的图型**不适合数据**（如 n=5 要画均值柱）→ **善意指出问题并说明更好的选择**，让用户决定。详见下方"主动拦截"小节
- 如果数据特征意味着特殊处理（双峰分布、严重异常值、跨量级）→ 在选图建议里明确提及

### 第 3 步：查期刊规范

确定目标期刊后查 `references/journal_specs.md` 拿到：单/双栏宽（mm 与 inch）、字号、推荐字体、DPI、矢量格式偏好。

不知道目标期刊就问一句。"毕业论文 / 中文核心 / 英文 SCI / NeurIPS" 都对应不同规范。

### 第 4 步：配环境

```python
from setup_style import setup_style
setup_style(journal='nature', lang='en')             # 英文 Nature
setup_style(journal='general', lang='zh', serif_for_zh=True)   # 中文宋体混排
```

`SciencePlots` 装了自动用，没装回退到内置预设, , 不会因为缺它崩溃。

### 第 5 步：绘制

按 `references/plot_recipes.md` 对应章节的配方画。每节都有可直接复制的 Python 代码 + 常见坑。

The rest: https://github.com/Haojae/scipilot-figure-skill/blob/HEAD//SKILL.md
