做实验的人大概都经历过这种场面:数据跑完了,结果文件夹里躺着几十个 CSV,离组会还有一天,图一张都没画。
更头疼的是改图。导师说"字太小"“颜色换成色盲友好的”“误差棒用标准误不要用标准差”,每改一次就要翻回去找当初那段绘图代码,而那段代码很可能写在某个早就关掉的 Jupyter 单元格里。
这篇文章讲我现在的做法:让 Claude Code 直接在项目目录里读数据、写绘图脚本、跑脚本、看结果,最后留下一个随时能重跑的plot.py。重点不是"让 AI 画图",而是让图变得可复现、好修改。
在开始之前,先分享一个我最近常用的开源工具站:Awesome Paper Research Skills(论文科研 Skills 排行榜)。
如果你平时用 Claude Code 或 Codex 做科研,不想每次都从头写规则和脚本,可以先去这个榜单里找现成的 Agent Skills。它目前收录了 115 个科研相关的开源仓库,涵盖找文献、读论文、写论文、科研绘图、实验复现和投稿审稿 6 个方向,每天自动更新 GitHub Stars 增长趋势。
像本文要讲的论文画图,直接在榜单搜索框旁点"科研绘图"快捷标签,就能筛出一批现成方案:
- 在线排行榜:https://riceai88.github.io/awesome-paper-research-skills
- GitHub 仓库:https://github.com/RiceAI88/awesome-paper-research-skills
先说清楚 Claude Code 是什么
Claude Code 是 Anthropic 出的命令行编程助手,装好后在终端里运行。它和网页版对话最大的区别是:它能直接读写你本地的文件,也能执行命令。
对画图这件事来说,这意味着它可以自己打开 CSV 看列名,写完脚本自己运行,报错了自己改,而不是你在网页和编辑器之间来回复制粘贴。
安装用官方脚本即可,安装后需要登录有 Claude Code 权限的账号或配置 API Key。具体套餐以官网为准,这里不展开。
curl-fsSLhttps://claude.ai/install.sh|bashcd~/research/my-experiment claude第一步:整理目录,写一份 CLAUDE.md
Claude Code 启动时会自动读取项目根目录下的CLAUDE.md。把绘图规范写进去,以后每次对话它都会遵守,不用反复交代。
我的实验目录一般长这样:
my-experiment/ ├── CLAUDE.md ├── data/ │ ├── baseline_seed0.csv │ ├── baseline_seed1.csv │ ├── ours_seed0.csv │ └── ours_seed1.csv └── figures/CLAUDE.md里写这些就够了:
# 绘图规范 - 只用 matplotlib,不要用 seaborn 默认主题 - 所有绘图代码写进 plot.py,不要写一次性代码 - 输出 PDF 矢量图到 figures/,同时输出 300 dpi 的 PNG 方便预览 - 字体:英文 Times New Roman,字号 9pt(双栏论文单栏宽度 3.5 英寸) - 配色用 Okabe-Ito 色盲友好色板 - 多个随机种子的结果:画均值,阴影表示标准误 - 不要修改 data/ 目录下的任何文件最后一条很重要。数据文件是原始记录,任何工具都不该碰。
第二步:先让它看数据,别急着画
很多人一上来就说"帮我画个对比图",结果它猜错了列名或者理解错了数据含义。更稳的做法是先让它汇报数据结构:
先不要画图。读一下 data/ 下所有 CSV,告诉我: 1. 每个文件有哪些列,各有多少行 2. 不同文件的列是否一致 3. 有没有缺失值或明显异常的数值它会自己用 pandas 打开文件并汇报。这一步经常能发现问题,比如某个种子少跑了几个 epoch,或者某一列全是 NaN。这些问题如果画完图才发现,前面的工作就白做了。
第三步:描述你要的图,让它写脚本并运行
确认数据没问题后,再提具体需求。描述得越像审稿人看图的视角越好:
写 plot.py,画训练曲线对比图: - 横轴 epoch,纵轴 val_acc - baseline 和 ours 两条线,每条是所有 seed 的均值,阴影是标准误 - 图例放右下角,不要边框 - 写完直接运行,然后告诉我 figures/ 下生成了哪些文件它通常会先写脚本,再执行python plot.py,如果缺包或者报错会自己修。整个过程你能在终端里看到每一步,它要执行命令前会征求你的同意,看清楚再批准。
第四步:核对数字,这一步不能省
图画出来好看不代表画对了。我每次都会追加一句:
在 plot.py 里加一段:把每个方法最后一个 epoch 的均值和标准误打印出来,保留 4 位小数。然后拿打印出来的数字,和自己实验日志里的结果对一遍。曾经遇到过它把标准差当成标准误算的情况,图上看不出来,但数字一对就露馅了。
AI 写的绘图代码,出错往往不是报错,而是"安静地算错"。这类错误只能靠人核对。
第五步:改图只改脚本
之后导师提修改意见,直接用自然语言告诉它:
导师意见:纵轴从 0.6 开始,线宽加粗到 1.5,ours 用实线 baseline 用虚线。改 plot.py 并重新运行。因为所有逻辑都在plot.py里,改动是可追踪的。建议把项目放进 git,每次改图提交一次,哪天导师说"还是上上版好看"也能找回来。
几个容易踩的坑
中文论文要用中文字体时,记得在 CLAUDE.md 里写明字体名称,比如宋体或思源宋体,否则容易出现方框乱码。
让它"美化一下"这种模糊指令,结果往往是加一堆花哨效果。期刊要的是清楚,不是好看,需求要具体到字号、线宽、颜色。
别把整个几个 G 的原始数据目录丢给它读,先用小样本或汇总后的 CSV,省额度也省时间。
生成的图放进论文前,按期刊要求检查尺寸。很多期刊对单栏、双栏宽度有明确规定,在投稿指南里能查到。
总结
用 Claude Code 画图,真正省下的时间不在第一张图,而在后面的第五次、第十次修改。规范写进 CLAUDE.md,逻辑沉淀在 plot.py,数字自己核对一遍,这套流程换成 Codex 也同样适用。
如果你主要的卡点不在画图,而是论文正文的结构和表述,也可以试试智一刻,它更偏向中文论文写作这一侧。