Scientific Figure Making 照顶会的出图习惯画论文图
用户要给论文、学术报告或答辩幻灯片画数据图时,你按 figures4papers 仓库里的 scientific-figure-making 规范写 matplotlib 脚本。作者是耶鲁大学的计算机博士生,这个仓库收的是他自己发表在 Nature Machine Intelligence、ICML、NeurIPS、ECCV 等期刊和会议上的出图脚本。这套 Skill 把这些脚本里反复用到的样式和导出习惯整理成了规则。仓库用的是 CC BY-NC 4.0 许可,只允许非商业使用,并且要署名。
触发
用户说"帮我画论文里的图""把这组实验结果画成柱状图""做个消融实验的图""画训练曲线""出 PDF 矢量图投稿用",或者要求"和 figures4papers 一样的风格"。
不适合:
- 交互式图表或网页可视化(Plotly、Altair、Bokeh)。
- 只是自己看数据、还没打算放进论文的探索性画图。
- 以 3D、地图为主的图。
- 在 Illustrator、Figma 里排版的示意图和信息图。
硬性规则
- 数据只用用户给的。 不补数,也不编造或"修饰"结果。缺数据就问,示意图里用的假数据要在脚本和回复里写明是示例。
- 按需读参考文件。 先读
SKILL.md,再按下表只打开要用的那个参考文件,不要一次全读。 - 这些函数要你自己写进脚本。
apply_publication_style、make_grouped_bar、finalize_figure等是references/api.md里规定的接口,不是可以pip install的库。按 api.md 的签名实现,或者改写figure_*文件夹里的现成脚本。 - 关键信息不清楚先问。 比较哪几组、几个子图、哪个是"我们的方法"、分辨率、数据格式,这些会改变图的样子,没说清楚就先和用户确认。
- 纵轴不从 0 开始时要说清楚。 规范允许把纵轴收紧到数据所在范围,好让差异看得见,但要在回复里提醒用户,必要时在图注里写明,别让读者误判差距。
- 许可证要告诉用户。 用户把仓库里的脚本或图用到商业产品、付费课程这类场合时,提醒用户 CC BY-NC 4.0 不允许商用。
安装
先检查:
ls ~/.claude/skills/scientific-figure-making/SKILL.md 2>/dev/null && echo "installed" || echo "not installed"
没装的话,告诉用户会把仓库克隆到哪里、链接到哪里,同意后:
git clone https://github.com/ChenLiu-1996/figures4papers.git ~/figures4papers
mkdir -p ~/.claude/skills
ln -s ~/figures4papers/scientific-figure-making ~/.claude/skills/scientific-figure-making
Codex 把最后两行里的 ~/.claude/skills 换成 ~/.codex/skills,Cursor 换成 ~/.cursor/skills。装好后要重启 Agent 才能识别。更新时在 ~/figures4papers 里运行 git pull。
不想装的话,也可以在 Agent 里打开这个仓库,直接按路径读 scientific-figure-making/SKILL.md。
运行环境:Python 3、matplotlib、numpy。标签里有复杂公式时才打开 use_tex,那样还需要本机装好 LaTeX。
参考文件
| 文件 | 什么时候打开 |
|---|---|
references/tutorials.md |
从头做一张柱状图、趋势图或热力图的完整步骤 |
references/api.md |
函数签名、PALETTE 配色、参数校验规则 |
references/common-patterns.md |
超宽画布、单独的图例子图、适合黑白打印的柱子 |
references/design-theory.md |
字体、导出和配色背后的理由 |
references/demos.md |
仓库里各个 figure_* 示例脚本的链接 |
风格要点
| 方面 | 规范 |
|---|---|
| 字体 | 无衬线,顺序 Arial、Helvetica、DejaVu Sans。大幅对比柱状图 24 号,紧凑子图 15 到 16 号 |
| 坐标轴 | 去掉上边框和右边框。轴线宽 2 到 3,大图用 3 |
| 配色 | 深蓝 #0F4D92 给提出的方法或关键结果,绿色系表示提升,红粉色系给对照方法,灰色 #CFCECE 给基线和背景 |
| 图例 | 不加边框。曲线或分组多时,单独留一个关掉坐标轴的子图放图例 |
| 柱状图 | 黑色描边(线宽 1.5 到 3),数值直接标在柱子上方。消融实验用同一种蓝色、不同透明度,要黑白打印时加斜线或点状填充 |
| 曲线 | 每个子图 2 到 4 条主曲线,线宽 2 到 3,不确定范围用 fill_between 画阴影,网格尽量不用 |
| 版式 | 3 到 4 个指标放一排时用超宽画布(宽是高的 3 到 4 倍),同一排子图的字号、线宽、颜色含义保持一致 |
| 导出 | 300 dpi,很密的柱状图用 600 dpi。同时出 PNG 和 PDF。SVG 设 svg.fonttype = 'none' 保留可编辑文字。无界面环境先 matplotlib.use("Agg") |
流程
- 问清用途(论文正文、补充材料还是幻灯片)、数据和要比较的对象,确认哪个是用户自己的方法。
- 按图的类型打开
tutorials.md或demos.md,挑最接近的figure_*示例作参照。 - 写脚本:先调用
apply_publication_style,再画图,最后用finalize_figure导出到figures/目录,文件名固定。 - 运行脚本,打开导出的 PNG 检查:文字有没有重叠或截断、图例有没有挡住数据、颜色含义是否和用户的方法对应。
- 把图和脚本路径交给用户,说明纵轴范围和用到的示例数据。
输出格式
- 脚本路径和导出文件路径(PNG、PDF,需要时加 SVG)。
- 一张导出图的预览。
- 颜色和方法的对应关系、纵轴范围,以及需要用户补的数据。
一句话
先问清数据和比较对象,按规范写 matplotlib 脚本,导出 PNG 和 PDF 后自己看一遍再交付。

评论(0)
还没有评论,来说第一句。