8 步核心工作流:scipilot-figure-skill 如何把原始数据变成期刊投稿图
【免费下载链接】scipilot-figure-skillSciPilot Skills family - Publication-grade scientific figure copilot for Claude Code项目地址: https://gitcode.com/gh_mirrors/sc/scipilot-figure-skill
scipilot-figure-skill是 Claude Code 生态里的一个「科研数据可视化顾问」AI 技能:它不是简单的画图工具,而是按照8 步核心工作流——先剖析数据、再选图型、再按期刊规范绘制与自检——把你的 CSV / Excel 原始数据,一步步变成 Nature、Science、IEEE、Elsevier、PNAS 和中文核心期刊都认的出版级投稿图。
为什么不能"上来就画"?
科研画图的痛点通常不是"不会用 matplotlib",而是手上一堆数据,不知道该用什么图把结论讲清楚。scipilot-figure-skill 的定位很明确:首要能力是思考与判断,其次才是绘制。
| 对比项 | 普通画图工具 | scipilot-figure-skill |
|---|---|---|
| 你说"画柱状图" | 直接plt.bar()出图 | 先做数据剖析:列类型、样本量、分布、异常值 |
| 选图依据 | 用户拍脑袋 | 按数据特征 + 论证目标查决策框架 |
| n=5 想画均值柱 | 照画 | 主动拦截,建议改用 stripplot |
| 维度太多 | 硬塞一张图 | 建议拆图 |
| 出图后 | 没人回看 | 程序自检 + AI 读图复核,闭环到通过 |
完整的设计哲学写在 SKILL.md,8 步工作流正是它与"画图脚本"的根本区别:每一步缺位,前一步的成果都不该执行。
8 步核心工作流:从原始数据到投稿级成图
0 理解任务 → 1 剖析数据 → 2 选图 → 3 查规范 → 4 配环境 → 5 绘制 → 6 自检闭环 → 7 导出第 0 步:明确论证目标——先想清楚"这张图要证明什么"
同样一份数据,论点不同,图完全不同。比如"药物 A 和 B 对比"这份数据:
- 想证明"A 整体快于 B" → 箱线图
- 想证明"两者在 t=3 分歧最大" → 折线图 + 误差带
- 想证明"个体差异极大" → spaghetti plot
所以第 0 步只回答两件事:这张图要说服读者相信什么?数据在哪里、长什么样?如果目标没说清,技能会主动追问,而不是默认"用户知道自己要什么"。
第 1 步:剖析数据——用事实驱动图型选择
运行 scripts/profile_data.py,输入一个 CSV 即可:
python scripts/profile_data.py data.csv --group group输出的剖析报告包含四块核心信息:每列类型 / 样本量 / 缺失率、连续列的分布统计与异常值、分组样本量结构、相关性矩阵,外加初步图型建议。读懂这份报告的完整手册在 references/data_profiling.md。
重点核对三件事:列类型识别对不对(数字 ID 被误认是常见坑)、每组 n 是多少(小样本要警告)、分布是否高度偏态(可能需要对数轴)。
第 2 步:选图——推荐 + 理由 + 备选
这是"顾问职责"的核心。基于第 0、1 步的事实,查 references/chart_selection.md 的决策框架决定图型,规则很简单但很硬:
- 给出推荐 + 简短理由 + 1-2 个备选,不丢一个选择让用户猜
- 分组组合 > 12 → 明确建议拆图
- 用户指定的图型不适合数据(如 n=5 画均值柱)→ 善意指出问题,给出更好的选择
- 双峰分布、严重异常值、跨量级 → 在建议里明确提及特殊处理
常用速查:n<10/组用 stripplot(严禁均值柱)、时间趋势用折线 + 误差带、矩阵数据用热力图(viridis / RdBu_r,远离 rainbow 色图)。
第 3 步:查期刊规范——栏宽、字号、DPI 一次查清
确定目标期刊后查 references/journal_specs.md,拿到单/双栏宽、字号下限、推荐字体、DPI 与矢量格式偏好。几个关键数字:
| 期刊 | 单栏宽 | 字号 | 子图标签 |
|---|---|---|---|
| Nature 系列 | 3.5 in(89 mm) | 5-7 pt | a, b, c(小写加粗) |
| Science | 2.2 in(单栏极窄) | 5-7 pt | A, B, C(大写加粗) |
| IEEE | 3.5 in | 8-10 pt | (a)(b)(c) |
不知道目标期刊就先问一句——"毕业论文 / 中文核心 / 英文 SCI / NeurIPS" 对应的是完全不同的规范。
第 4 步:配环境——一行搞定期刊预设与中文字体
from setup_style import setup_style setup_style(journal='nature', lang='en') # 英文 Nature setup_style(journal='general', lang='zh', serif_for_zh=True) # 中文宋体 + Times 数字混排scripts/setup_style.py 自动完成三件事:套用期刊预设、按Noto Sans CJK > Source Han Sans > SimHei优先级配置中文字体、修复负号方框(unicode_minus)。中文 matplotlib 出"豆腐块"方框的老问题,从源头解决。
第 5 步:绘制——9 类图配方 + 强制约束
按 references/plot_recipes.md 的对应配方画,覆盖折线、柱状、散点、箱线/小提琴、热力图、误差棒、分布图、相关性矩阵、多面板组合 9 类,每节都有可直接复制的代码 + 常见坑。
画图时有三条强制约束:
figsize直接定最终尺寸(如 Nature 单栏(3.5, 2.625)),导出后绝不在 Word / LaTeX 里二次缩放- 默认色盲安全配色(Okabe-Ito /
colorblind)+ 冗余编码(线型 / marker) - 误差棒必须在图注交代 SD / SEM / 95% CI + 样本量 n
第 6 步:自检闭环——程序 + AI 读图,把问题挡在投稿前
v2.1 最核心的升级:出图后渲染 PNG → 程序自检 → AI 读图复核 → 回改重渲,三层全过才算完。
- 语义层:对照 references/viz_pitfalls.md 的 18 条科研画图禁忌查图型 / 配色 / 误差是否踩坑
- 形式层:对照 references/publication_checklist.md 查尺寸、DPI、字号
- 视觉层:scripts/visual_qa.py 抓缺字乱码、文字裁切、刻度重叠等确定性问题;AI 直接读 PNG,对照 references/visual_review.md 的 8 项清单核对"图例压数据、子图 a/b/c 对齐、灰度可分"这些程序查不出的感知问题
任何一层不通过就回去改图、重渲、再读,直到通过。
第 7 步:导出——矢量优先 + 灰度预览 + 机器审计
from export_figure import export_figure export_figure(fig, basename='figs/fig1', formats=['pdf', 'svg', 'png'], size_inches=(3.5, 2.625), dpi=300, grayscale_preview=True) # 自动出灰度版供色盲检查scripts/export_figure.py 按最终尺寸多格式导出,最后再跑一遍 scripts/check_figure.py--strict做机器审计(格式 / DPI / 字体嵌入)。
五条硬性原则:审稿人挑刺的地方,全在这
| # | 原则 | 为什么 |
|---|---|---|
| 1 | 按最终尺寸出图,不二次缩放 | 9 pt 缩 50% 就变 4.5 pt,直接打回 |
| 2 | 矢量优先(PDF / SVG / EPS),绝不 JPEG | 矢量缩放不糊,JPEG 有压缩 artifact |
| 3 | 配色对色盲友好 + 冗余编码 | 约 8% 男性色觉异常,红绿对比对他们传达力归零 |
| 4 | 字号在最终尺寸下可读(≥6 pt) | 编辑会按 mm 打印查字号 |
| 5 | 误差必有交代(类型 + n + 检验方法) | SD 和 SEM 差一个 √n,混淆 = 退稿 |
主动拦截:它会礼貌地拒绝你的错误请求
这是"顾问"最迷人的地方——发现请求会踩坑时,先说明再给替代方案,不默默照做。比如你说"帮我画 3 组各 5 个样本的均值柱状图",它会回复:
n=5 太小,均值柱掩盖分布——审稿人很可能要求 "show individual data points"。我建议改成箱线 + stripplot 叠加每个点:5 个点直接可见,反而更可信。要按原方案画,还是改?
完整拦截清单(P1-P18)在 references/viz_pitfalls.md:双 Y 轴捏造相关性、饼图、Y 轴截断、一图多论点、中文方框、子图编号乱飞……每条都写清了"错误是什么 → 审稿人视角 → 正确做法"。
快速上手:如何安装 scipilot-figure-skill
把仓库放到 Claude Code 的技能目录即可:
git clone https://gitcode.com/gh_mirrors/sc/scipilot-figure-skill ~/.claude/skills/scipilot-figure-skill pip install -r ~/.claude/skills/scipilot-figure-skill/requirements.txt核心依赖是 matplotlib + seaborn + plotly + pandas(见 requirements.txt);SciencePlots / pypdf / kaleido 是可选增强,缺失时优雅降级不影响运行。装完后直接丢一句"我有 results.csv,帮我画成论文图",技能就会按 8 步工作流跑起来。
关键文件导航
| 文件 | 作用 |
|---|---|
| SKILL.md | 技能主文档:工作流、五条原则、拦截规则 |
| references/chart_selection.md | 选图决策框架(每次选图必读) |
| references/data_profiling.md | 剖析报告解读手册 |
| references/journal_specs.md | 主流期刊栏宽 / 字号 / DPI / 字体规范 |
| references/plot_recipes.md | 9 类图的完整配方 |
| references/viz_pitfalls.md | 18 条科研画图避坑清单 |
| references/publication_checklist.md | 投稿前形式合规清单 |
| references/visual_review.md | AI 读图自检 8 项清单 + 回改循环 |
| scripts/ | 6 个工具脚本:剖析、样式、导出、自检、布局 |
一句话总结:先想清楚论证什么,再用事实选图,按规范画,过闭环检,最后导出——这 8 步走下来,你的数据图自然就是投稿级的了。
【免费下载链接】scipilot-figure-skillSciPilot Skills family - Publication-grade scientific figure copilot for Claude Code项目地址: https://gitcode.com/gh_mirrors/sc/scipilot-figure-skill
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考