科研画图 18 大经典错误: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
科研画图被审稿人打回,往往不是因为图画得"不精致",而是踩中了均值柱掩盖分布、双 Y 轴误导、饼图、rainbow 色图这 18 类经典错误。开源项目scipilot-figure-skill(SciPilot Skills 家族成员)把这些问题沉淀成了一份"主动拦截"清单,并配合三层自检闭环,帮你在投稿前把问题挡在门外。本文带你逐条拆解这份科研画图避坑清单。
scipilot-figure-skill 是什么:先思考后绘制的可视化顾问
和普通画图工具"你说画柱状图它就画"不同,scipilot-figure-skill 的定位是科研数据可视化顾问——首要能力是【思考与判断】,其次才是【绘制】。
它会先问"这张图要论证什么",再剖析数据(列类型、样本量、分布、异常值、相关性),然后推荐图型;一旦发现你的需求会触发经典错误,就先说明问题、再给替代方案,而不是默默照做。
核心工作流 8 步:理解任务 → 剖析数据 → 选图 → 查期刊规范 → 配环境 → 绘制 → 自检闭环 → 导出,完整定义见 SKILL.md。
18 大经典错误总览:一张表看全清单
完整 18 条(每条含"错误是什么 → 为什么错 → 正确做法")收录在 references/viz_pitfalls.md,按性质可归为四类:
| 编号 | 错误 | 一句话后果 | 正确替代 |
|---|---|---|---|
| P1 | 均值柱状图掩盖分布 | n=3 和 n=300 画出来一样高 | 箱线/小提琴 + stripplot 显示原始点 |
| P2 | 双 Y 轴显示无关变量 | 视觉"相关"是作图者捏造的 | 拆上下子图共享 x 轴,或标准化共轴 |
| P3 | 饼图与 3D 图 | 人眼判角度比判长度差 3 倍 | 横向柱状(按值排序) |
| P4 | Y 轴不当截断 | "上升 2%"看起来像"翻倍" | 从 0 起 / log 轴 / 画断裂标记 |
| P5 | 连续色阶无 colorbar | 读者不知道深浅对应什么数值 | 必加 colorbar 并标变量名+单位 |
| P6 | 把离散点连成折线 | 暗示不存在的连续关系 | 散点 / 点图 / 柱状 |
| P7 | 过度使用颜色 | 超过 7 色无法稳定区分 | 双重编码 + 跨图统一配色 |
| P8 | 图例缺失或不清 | 标签是Series1之类程序名 | 人话标签,图例避开数据 |
| P9 | 误差类型不交代 | SD 与 SEM 差 √n,混淆=结论反转 | 图注写清 SD/SEM/CI + n |
| P10 | 过度装饰(chartjunk) | 装饰淹没真实数据对比 | 去网格、去 spine、marker 简洁 |
| P11 | 分辨率 / 格式不达标 | JPEG 数据图、72 DPI 被直接拒收 | 矢量 PDF/SVG,位图 ≥300 DPI |
| P12 | 一图多论点 | 读者 5 秒内抓不到核心信息 | 拆图,一张图一个结论 |
| P13 | 红绿对比不做色盲检查 | 8% 男性读者看成两条灰线 | Okabe-Ito 配色 + 灰度预览 |
| P14 | rainbow / jet 色图 | 感知不均匀,造出虚假"峰" | viridis / magma / RdBu_r |
| P15 | 显著性符号滥用 | 全图星号 + 未做多重校正 | 只标与论点相关的对比,写清检验 |
| P16 | 中文/负号变方框 | 画时不报错,投稿才暴露 | 自动配 CJK 字体 + 程序自检拦截 |
| P17 | 文字裁切与图例遮盖 | 被裁标签=信息缺失,等于藏数据 | constrained_layout + 图例移出数据区 |
| P18 | 多面板子图编号不对齐 | a/b/c 横竖不成线,组图显草率 | add_panel_labels()一行自动对齐 |
💡 P16–P18 是 v2.1 新增的"排版/渲染"类坑——画的时候看不出来、导出后才暴露,正是最容易被忽略的三类。
选图错误:P1 小样本均值柱为什么"严禁"
P1 是拦截率最高的一条。典型场景:3 组各 5 个样本,你想画均值柱状图。
审稿人视角:
- n=5 太小,柱子高度 + 一根误差棒无法反映真实分布
- 双峰、偏态、单个离群点主导——全被"均值"吃掉
- 审稿人大概率批注 "show individual data points"
拦截后的替代方案:n<10 直接 stripplot / dot plot 列点;n≥10 用箱线/小提琴 + stripplot 叠加原始点。
轴与图型错误:双 Y 轴、截断与折线连分类
- P2 双 Y 轴:两个轴的尺度可以任意调整,A 和 B 视觉上的"重合"或"分歧"完全是捏造的。量纲不同要看趋势 → 拆上下子图共享 x 轴。
- P4 Y 轴截断:比例/概率/准确率类数据必须从 0 起;确实要截断(如 98% vs 98.5%)→ 画一道断裂标记并在图注说明。
- P6 折线连分类点:x 是 A/B/C/D 这类分类变量时,"连线"没有任何数学意义,读者会误以为存在连续过渡。
配色错误:colorbar、红绿对比与 rainbow 色图
- P5:颜色映射连续值的图(热力图、散点 hue、等高线)必须配 colorbar,且多图比较时锁定
vmin/vmax一致。 - P13 红绿对比:约 8% 男性、0.5% 女性色觉异常,红绿是重灾区。默认改用 seaborn
colorblind或 Okabe-Ito 配色,并加线型/marker 冗余编码,导出时生成灰度版验证。 - P14 rainbow / jet:黄色波段视觉极亮,会造出数据里不存在的"峰"。单向数据用 viridis/magma,双向数据用 RdBu_r +
center=0。
统计错误:误差交代与显著性符号
P9 是高频退稿原因:图里有误差棒却没写 SD / SEM / 95% CI。三者含义完全不同(SD 和 SEM 差一个 √n),图注必须写清误差类型 + 样本量 n + 检验方法 + 校正方式。
P15 提醒:只标注与论点相关的少数对比,不要"整图全是星号";小样本 p<0.05 常是噪音,可考虑展示效应量。
渲染错误:方框、裁切与子图错位(v2.1 新增)
这三条是"画的时候看不出来、导出投稿才暴露"的坑:
- P16 中文/负号方框:matplotlib 默认字体不含 CJK 字符表,缺字时只发一条 warning 照样出图。
setup_style(lang='zh')会自动按优先级配置中文字体并修复负号方框,实现见 scripts/setup_style.py。 - P17 文字裁切/图例遮盖:
setup_style默认开启 constrained_layout 从源头留位,出图后再跑finalize_figure兜底理版,工具在 scripts/layout_tools.py。 - P18 子图编号错位:手动用
ax.text摆 a/b/c/d 极易横竖不齐;add_panel_labels(fig, style='nature')用统一 figure 坐标让标签横竖成线,IEEE 风格传style='ieee'输出 (a)(b)(c)。
"主动拦截"怎么工作:先说明,再给方案
发现需求会触发 18 条中任意一条时,技能的拦截话术遵循固定四步:说明触发了哪条 → 一句话解释审稿人视角 → 给可执行替代方案 → 询问是否仍坚持(尊重你的决定,但留下明确的劝阻记录)。
真实拦截示例(n=5 均值柱):
你要的"3 组各 5 个样本的均值柱状图"会触发 P1:n=5 太小,柱状会让审稿人怀疑你藏了什么。我建议改成箱线 + stripplot 叠加每个点,5 个点直接可见。要按原方案画吗?
这套机制的完整定义见 SKILL.md 的"主动拦截"小节。
三层自检闭环:让错误出不了门
拦截发生在"画之前",而 v2.1 的自检闭环发生在"画之后",三层都要过:
| 层级 | 检查什么 | 工具/文档 |
|---|---|---|
| 语义层 | 18 条图型/配色/统计禁忌 | references/viz_pitfalls.md |
| 形式层 | 尺寸、DPI、字号、误差是否写明 | references/publication_checklist.md |
| 视觉层 | 渲染 PNG → 程序抓缺字/裁切/重叠 → AI 读图查遮盖/对齐/灰度 → 回改重渲 | scripts/visual_qa.py + references/visual_review.md |
任何一层不通过就回去改图,矢量导出放在闭环通过之后;最后再用 scripts/check_figure.py 跑一遍--strict机器审计。
快速上手:安装与调用
把仓库克隆到 Claude Code 技能目录即可:
git clone https://gitcode.com/gh_mirrors/sc/scipilot-figure-skill.git \ ~/.claude/skills/scipilot-figure-skill pip install -r ~/.claude/skills/scipilot-figure-skill/requirements.txt日常使用只需一句话,例如"我有这份 results.csv,帮我画成论文图"——它会自动走完剖析、选图、拦截、自检全流程。选图决策框架见 references/chart_selection.md,9 类图的绘制配方见 references/plot_recipes.md,期刊栏宽/字号/DPI 规范见 references/journal_specs.md。
总结
- 科研画图最大的风险不是工具不熟,而是图型选择与表达方式踩中 18 条经典错误
- scipilot-figure-skill 用"主动拦截 + 三层自检闭环"把拦截前置到画图之前、把兜底后置到导出之前
- 投稿前对照 references/viz_pitfalls.md 逐条自查,就能把绝大多数形式与语义问题挡在审稿人之前
【免费下载链接】scipilot-figure-skillSciPilot Skills family - Publication-grade scientific figure copilot for Claude Code项目地址: https://gitcode.com/gh_mirrors/sc/scipilot-figure-skill
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考