如果让我用一个词概括 Codex 在科研绘图中的价值,我会选“复现”。Codex 是 OpenAI 推出的编程智能体,它不是画图软件,而是一个能根据自然语言自动写代码、执行命令、读取结果、继续修改的终端助手。把 Codex 和 Nature Figure 标准放在一起,做的事情其实很直接:用一套可重复执行的 Python 绘图流程,产出符合期刊发表要求的论文级图片。这个组合适合正在写论文、赶课题、需要反复调整图表风格的科研人员,也适合给课题组搭建统一出图模板的同学。最值得关注的不是“一键出图”,而是把人工规范变成代码,让每次出图都保持清晰、统一、可追溯。
全文按实际落地顺序展开:先讲清楚 Codex 和工作流定位,再讲环境准备,然后进入单张图、批量图、规范检查和排查。如果你只想快速试一张图,可以直接跳到第 2.4 节;如果你想真正把自动化科研绘图跑起来,建议从头看完。
1. 先搞清楚 Codex 和 Nature Figure 分别解决什么问题
1.1 Codex 不是画图软件,而是一个能上手的编程智能体
很多第一次接触 Codex 的人会把它理解成“更聪明的画图对话框”,但其实它的核心能力在终端里。你可以用自然语言描述需求,比如“读取 data 目录下的 test.csv,画一张折线图,误差棒用 SEM,保存成 300 DPI 的 TIFF”。Codex 会生成对应代码,在本地执行,如果脚本报错,它会读取错误信息并尝试修复。这个过程就像旁边坐了一个熟悉 Python 绘图的同事,你说需求,他写脚本,你审结果,他强调格式。
对科研人员来说,这个交互模式最大的好处是:整个绘图过程不是一次性输出,而是“代码 + 数据 + 对话历史”的组合。只要你保留最终脚本,下次换数据、换分组、换颜色,都能快速重跑。这一点非常关键,因为论文返修时最怕的就是“当时这张图怎么画的,找不到脚本了”。
另外,Codex 能读写本地文件,所以它可以处理 CSV、Excel、JSON 等数据,直接调用 matplotlib、seaborn、scipy 这些绘图和统计库。它不像在线网页制图那样让你上传图片再手动调参数,而是把所有操作都落在本地文件系统里。这样对于自动化科研来说,扩展性要好很多。
1.2 Nature Figure 不是某个固定软件,而是一套论文图标准
项目标题里的 Nature Figure 经常被误以为是一个工具或模板库。从实际投稿角度看,Nature 系列期刊不会强制要求你用某一个绘图软件,评审和编辑看的是图片是否清晰、真实、可读,是否满足期刊给出的大小、分辨率、字体和格式要求。
所以“用 Codex 做 Nature Figure”,更准确的理解是:用 Codex 生成那些符合 Nature 风格标准的图。这种标准通常包括:单栏宽度 89 mm、双栏宽度 183 mm;位图建议 300 DPI 以上;字体常用 Arial 或 Helvetica;坐标轴标签清晰;误差棒定义明确;配色在打印和色盲读者面前都能区分;统计标记不遮挡数据;图例不需要又粗又黑的边框。
这些规范听起来不难,但一旦有几十张图要统一修改,手动处理非常痛苦。如果把它们提前固化成代码里的常量,比如统一字体大小、图片尺寸、输出 DPI、颜色列表,那么后续每张图都会自动遵守同一套标准。这正是 Codex 和 Nature Figure 结合后的核心价值。
1.3 适合和不适合用 Codex 绘图的边界
先说适合的场景。常见的科研数据图,比如折线图、柱状图、散点图、热图、误差棒图、箱线图,Codex 都能很快生成。只要数据结构清楚,提示词写得规范,它可以把从数据读取到布局调整的整条链路跑通。另外,如果有一批格式相似、只是参数不同的图,用 Codex 写一个批量脚本也很高效。
不适合的场景也要心里有数。复杂的机理示意图、细胞信号通路图、需要大量手工矢量和视觉设计的封面图,Codex 能生成一个粗略草稿,但很难达到期刊美编和专业人士手绘的效果。这类图更适合用专业矢量工具去精修,或者请专业科研绘图团队。
低配置电脑也能跑 Codex,因为它本身不是重模型,绘图的压力主要在 Python 库和图片分辨率。但如果你的数据量特别大,处理几十万行的表格、绘制多子图高分辨率输出,内存和 CPU 占用会明显上升。低配置能跑,不代表适合批量跑,这一点后面会再展开。
2. 跑通 Codex 之前,先把环境准备到能复现
2.1 安装 Codex CLI 的官方路径
Codex 目前比较推荐从官方终端工具开始用。安装前先确认本机有 Node.js 运行环境,因为 Codex 的 CLI 通常通过 npm 分发。不同操作系统的差异不大:macOS 和 Linux 可以直接在终端里安装,Windows 推荐使用 PowerShell 或 Windows Terminal。
下面是一个示例安装流程,具体包名和命令以 OpenAI 官方文档为准:
# 先确认 node 和 npm 可用 node -v npm -v # 全局安装 Codex CLI,包名以官方文档为准 npm install -g @openai/codex # 验证安装结果 codex --version执行codex --help时如果能看到参数列表,说明基本安装成功。如果提示 command not found,常见原因是 npm 全局安装目录没有加入 PATH,可以去检查 Node.js 的全局 bin 目录是否在系统环境变量里。
2.2 登录、模型选择和网络问题排查
安装完成后,Codex 需要连接官方服务才能工作。常见方式有两种:一是交互式登录,在终端执行登录命令后完成授权;二是配置 API Key,通过环境变量让 Codex 读取访问凭证。
# 方式一:交互式登录 codex login # 方式二:配置 API Key(示例) export OPENAI_API_KEY="你的 API Key" codex登录或请求过程中如果出现连接失败、一直重连、模型不支持等报错,我的排查顺序是固定的:
- 先确认本机网络是否能正常访问官方服务,访问不了就先恢复正常的网络环境。
- 再确认当前账号是否有 Codex 使用权限,登录状态是否过期。
- 然后看模型配置。如果提示某个模型名不受支持,说明当前账号或接口不支持该模型,把模型名改成官方支持列表里的模型,或删除自定义模型名让 Codex 使用默认值。
- 最后检查本机是否有最近安装的网络拦截类软件,这类工具可能会干扰 Codex 的本地请求。遇到这种情况,卸载或退出这些软件,恢复系统默认网络设置后再试。
不要为了绕过限制去使用来路不明的第三方接入服务。这类服务一方面不稳定,容易出现登录状态错乱、会话串号、数据泄露的问题;另一方面一旦被服务商检测到,账号可能受影响。科研数据通常涉及尚未发表的结果,稳定性比省一点成本更重要。
2.3 建立一个规范的科研绘图项目目录
在跑第一张图之前,我建议先建一个项目目录。目录不需要很复杂,但要把数据、脚本、图片和提示词分开,这样 Codex 在读写文件时不容易找错路径,你后续也方便整理投稿材料。
my_paper/ ├── data/ │ └── experiment_results.csv ├── scripts/ ├── figures/ └── prompts/Python 绘图环境建议用 conda 或 venv 单独创建,不要和系统 Python 混在一起。否则一次 pip 升级就可能把别人项目的依赖搞乱。
conda create -n science_plot python=3.11 -y conda activate science_plot pip install matplotlib pandas numpy scipy seaborn上面这几个库是常见组合。matplotlib 负责基础绘图,seaborn 负责统计图和配色,numpy 和 scipy 负责数据处理和统计检验,pandas 负责读取表格。如果你的课题用到特殊库,再按需安装。
2.4 第一轮最小验证:让 Codex 生成一张简单图
环境准备好之后,不要直接让它画出版级图。先跑一个最小任务,确认 Codex 能读写文件、能执行 Python、能输出图片。比如在项目根目录下启动 Codex,输入:
请读取 data/experiment_results.csv,用 matplotlib 画一张折线图, x 轴是 time,y 轴是 value,保存到 figures/basic_line.png。这里要注意,需要确保 CSV 文件里真的存在 time 和 value 两列。如果列名不对,Codex 会根据它猜列名,结果可能和你的数据对不上。
等命令执行完,打开 figures 目录检查:
- 是否生成了 basic_line.png;
- 图片是否能正常打开;
- x 轴和 y 轴是否都有标签;
- 数据点数量是否和原表一致。
只要满足这几点,就可以认为 Codex 的基本链路是通的。如果这一步都失败,先不要调绘图细节,把环境问题解决再说。很多后续报错,其实都是从最早的环境没配好开始的。
3. 把能出图升级成论文级图片:提示词和参数控制
3.1 先定义你的图片规格,再写提示词
很多人让 AI 画图时只说“画一张好看的图”,结果生成一张默认样式的 matplotlib 图,看着很简陋。问题不在 Codex,而在需求里缺少规格。论文级图片最难的不是某个酷炫效果,而是所有细节都符合出版要求。
我在写提示词之前,通常会先把下面这张表填完:
| 规格项 | 示例值 | 说明 |
|---|---|---|
| 图片宽度 | 89 mm 或 183 mm | 单栏或双栏,按期刊要求 |
| 输出 DPI | 300 或 600 | 位图分辨率 |
| 字体 | Arial / Helvetica | 无衬线字体更清晰 |
| 正文字号 | 5-7 pt | 期刊正文中的图内文字 |
| 坐标轴标签 | 加单位 | 不要只写 Time,写 Time (min) |
| 图例位置 | upper left / best | 不遮挡数据 |
| 图例边框 | 无边框 | Nature 风格常用无边框 |
| 配色 | 色盲友好 | 不要只靠红绿区分 |
| 误差棒 | mean ± SEM | 在 caption 里说明 |
| 导出格式 | TIFF 或 PDF/EPS | 位图或矢量图按投稿类型选 |
这些规格不一定每条都能写进一个短提示词,但它们应该成为你项目里的“固定标准”。如果这次忘了字体,下次忘了 DPI,图就很难统一。
3.2 一条比较完整的绘图提示词示例
在数据文件存在、环境也正常的前提下,可以给 Codex 一个更完整的提示词。示例:
请读取 data/experiment_results.csv,画一张折线图,要求如下: 1. x 轴是 time,单位 min;y 轴是 value,每组数据画一条线; 2. 用误差棒表示 mean ± SEM,误差棒颜色与线颜色一致; 3. 图片宽度按 89 mm 设置,输出 300 DPI; 4. 全局字体使用 Arial,坐标轴标签字号 7 pt,刻度字号 6 pt; 5. 图例放在 upper left,不加边框; 6. 颜色使用色盲友好配色,避免只用红色和绿色; 7. 保存为 figures/fig_trend.tiff,同时导出一份 PDF 版本。这个提示词把大多数关键参数都说清楚了。Codex 会根据需要安装或导入库,绘制后再告诉你结果。如果它发现误差棒需要计算,也会自己调用 numpy 完成。你只需要在它完成后去检查图片是否符合预期。
3.3 让 Codex 先看数据,再画图
绘图最容易翻车的点不是颜色,而是列名。列名要是写错了,画出来的图每一个标签都是错的。所以我在正式提需求之前,通常会先让 Codex 做一次数据勘察:
请读取 data/experiment_results.csv,打印前 5 行,并输出所有列名和数据类型。这样可以让 Codex 先了解数据结构,也方便你检查数据文件是否读对了。如果 CSV 的分隔符不是逗号、编码不是 UTF-8、文件路径有中文,这一步都会暴露出来。
对于复杂表格,我还会要求它输出分组情况和缺失值统计。比如 “按 group 列分组,统计每组的样本量,并检查 value 列是否包含 NaN”。这些前期检查看起来多花一点时间,但能避免后面画完一整张图才发现数据存在错误的尴尬。
3.4 审核和迭代:每次只改一个点
Codex 支持多轮对话,这既是优点也是风险。你看着一张图不顺眼,可能会连续说出“字体再大一点”“颜色换一下”“图例换个位置”“线再粗一点”。如果一次说太多,Codex 可能会在修改时把已经正确的部分也弄乱。
我的建议是一次只改一个点。第一轮先确认数据映射正确,第二轮调整字体,第三轮调整配色,第四轮再处理导出格式。每次修改后都打开图片检查一次。改到某个版本觉得不错,就立刻把脚本复制出来,单独保存为plot_fig_trend.py,不要继续在同一轮对话里反复微调。
这里还要注意,Codex 的生成结果有一定随机性。同一个提示词两次跑出来的代码可能不完全一样,虽然图最终可能相似,但脚本细节可能变化。所以一旦确定某个版本可用,就要把脚本固化下来,后续只改数据路径和参数字段,不要每次都从零生成。
4. 批量科研绘图:从单张图到一整套图
4.1 用配置文件把参数和代码分开
单张图跑通之后,很多人会觉得自动化科研已经完成了。但真实论文往往有十几张图,每个子图的数据文件、标题、颜色、输入列都可能不同。如果每张图都重新写一条提示词,效率很低,而且很难保持风格一致。
更好的做法是把图之间的差异提取到一个配置文件里。常见格式是 YAML 或 JSON。下面是一个简单的 YAML 示例:
figures: - name: fig1_trend input: data/experiment_results.csv x_col: time y_col: value group_col: condition title: "Time course of response" color: "#2166AC" output: figures/fig1_trend.tiff - name: fig2_bar input: data/summary_stats.csv x_col: group y_col: mean error_col: sem title: "Comparison across groups" color: "#B2182B" output: figures/fig2_bar.tiff配置文件把“画什么”和“怎么画”分开。Codex 只需要生成一套绘图脚本,脚本读取配置文件里的参数,再循环处理每张图。这样后续新增一张图,只要往配置文件里加一段,不用改绘图代码。
4.2 让 Codex 写一个批量绘图入口脚本
为了让 Codex 理解需求,你可以给它描述整套流程,而不是一句“批量画图”。比较好的提示词是:
请写一个 Python 脚本 scripts/generate_all_figures.py, 读取 config.yaml 中的 figures 列表,对每个 figure: 1. 根据 input 路径读取数据; 2. 根据 x_col、y_col、group_col 等参数绘图; 3. 使用统一样式:Arial 字体、300 DPI、89 mm 宽度、无边框图例; 4. 保存到 output 指定的路径; 5. 执行完后打印每张图的耗时和输出文件大小。生成的核心代码可能类似这样,关键是把配置循环跑起来:
import yaml import matplotlib.pyplot as plt with open("config.yaml", "r", encoding="utf-8") as f: config = yaml.safe_load(f) for item in config["figures"]: print("Generating", item["name"]) # 读取数据、绘制、保存的步骤在这里实现 # 最后使用统一的 style 参数 plt.savefig(item["output"], dpi=300)这里我不展开完整实现,因为不同课题的数据结构差异很大。重点是,你要让 Codex 把风格统一封装成函数,而不是让每张图各自为政。代码一旦写成循环,后续维护成本会低很多。
4.3 输出命名和版本管理
批量绘图最怕同名覆盖。今天跑完的图,明天换数据再跑一次,旧版本可能直接被覆盖。如果这时候审稿意见回来说“我觉得之前的配色更好”,你找不回旧版本。
我在实际项目中会要求 Codex 按name_version的格式输出,或者在输出目录里生成一个带时间戳的子目录:
figures/20250115_v1/ figures/20250116_v2/同时在每次批量生成后,把对应的 config.yaml 也复制一份到图片目录里。这样每张图对应哪个数据文件、哪个参数版本,都能追溯。论文返修时,这个习惯能省很多事。
4.4 批量的失败重试和时间控制
批量任务看起来只是多跑几个循环,真正执行起来很容易出问题。比如某个输入文件读取失败、某个分组里没有数据、某个列名只在这个文件里写错了。如果脚本一遇到错误就终止,后面的图全都不生成。
所以我一般会让 Codex 在循环里做三件事:
- 单张图失败时记录错误信息,但不退出脚本;
- 每张图保存独立的日志文件;
- 全部跑完后汇总哪些成功、哪些失败、失败原因是什么。
代码结构上可以给每张图包一层 try-except,把异常信息追加到日志里。不要一上来就开最大并发,先按顺序跑一遍。顺序跑的好处是,如果第 3 张图挂了,你能快速定位到具体数据和参数;如果一开并发就十几个错误堆在一起,排查反而更慢。
注意:不要一上来就开最大并发,先用一条样例确认输入、输出和日志都正常。
低配置环境尤其要注意。批量导出高分辨率 TIFF 时,内存占用可能比较高。如果发现跑到一半系统卡顿,先把 DPI 降到 300,或者把图片宽度从双栏改成单栏,看看资源占用是否正常。
5. 论文级图片的标准,到底怎么落到代码里
5.1 尺寸和分辨率
不同期刊的投稿要求不完全一样。以 Nature 系列常用标准为例,单栏图宽度约 89 mm,双栏图宽度约 183 mm。这个数字要作为常量写在脚本顶部:
SINGLE_COLUMN_MM = 89 DOUBLE_COLUMN_MM = 183 FIG_DPI = 300分辨率方面,位图通常要求 300 DPI 以上。如果你的图是统计图,建议同时导出矢量格式,比如 PDF 或 EPS。矢量图在缩放时不会模糊,排版时效果更好。导出时不要让 matplotlib 自动选择过小的画布尺寸,而是在figure()初始化时就指定figsize。
5.2 字体、线条和图例
Nature 风格的图通常使用无衬线字体,常见的是 Arial 或 Helvetica。matplotlib 需要确保系统里存在这些字体,否则会自动替换成默认字体,排版效果会有差异。字体问题排查起来比较麻烦,建议在项目最开始就测试一下目标字体能不能正常渲染。
线条粗细也要考虑印刷效果。屏幕上看着合适的 1 pt 线条,印到纸上可能偏细。一般坐标轴线可以 0.5 到 0.75 pt,数据线可以比坐标轴线粗一些。图例尽量不用又粗又黑的方框,把frameon设为 False,或者直接让图例背景透明。
5.3 配色与色盲友好
很多默认配色没有考虑色盲读者。最典型的坑就是“红色代表 A 组,绿色代表 B 组”,在红绿色盲读者眼里几乎无法区分。科研图片要尽量使用色盲友好的配色方案,比如 matplotlib 的viridis、plasmacolormap,或者使用明度和色调都有差异的离散颜色。
如果不能用颜色区分,就要配合其他视觉通道。比如折线图可以给不同组使用不同线型:实线、虚线、点线。柱状图可以加斜线纹理。这样纸张打印成黑白版时,信息也不会丢失。
5.4 统计标记和误差棒
论文图里出现 mean ± SEM 时,一定要在 figure caption 里写清楚误差棒含义。SEM 和 SD 的区别、样本量是多少、显著性检验方法是什么,这些信息不能只靠图例表达。
显著性标记也有排版讲究。星号不要挡住数据点,可以标注* p < 0.05, ** p < 0.01。如果有多组两两比较,更推荐用字母标记法,比如组上标 a、b、c,图内标注每组对应的字母,避免星号过多导致图形凌乱。
5.5 写一个图片自查脚本
提交前最怕的是每张图人工用看图软件检查,几十张图看下来,眼睛早就花了。我建议让 Codex 生成一个图片检查脚本,自动扫描输出目录,检查每张图片的分辨率、尺寸、文件格式和文件大小。
一个简化示例:
from PIL import Image from pathlib import Path fig_dir = Path("figures") for img_path in fig_dir.glob("*.tiff"): with Image.open(img_path) as im: width, height = im.size dpi = im.info.get("dpi", (0, 0)) print(img_path.name, "size:", width, height, "dpi:", dpi)这个脚本不检查图形内容,但能快速发现导出参数错误。真正的内容审核还是要人工完成。自动化只能帮你避免低级失误,不能替代你对数据的判断。
6. 常见报错和排查顺序
6.1 Codex 自身运行时报错
Codex 偶尔会出现一直重连、连接失败、模型不支持之类的错误。遇到这类问题,先不要急着反复重启。我的排查顺序是:
- 看终端输出的完整错误信息,不要只看最后一行;
- 确认官方服务是否处于正常状态;
- 确认本机网络是否正常,能否访问 Codex 依赖的官方接口;
- 检查登录状态和 API Key 是否有效;
- 检查当前配置里是否指定了不受支持的模型名。
如果启动时提示找不到 Codex 命令,多半是安装目录没加入 PATH,检查 Node.js 全局 bin 目录。如果登录后提示模型不支持,就把模型配置改回官方默认值。不要为了强行使用某个模型而去套非官方配置,反而会把环境搞得更难排查。
6.2 代码运行时报错:先看路径、权限和依赖
Codex 生成的代码本质是本地 Python 代码,所以最常见的错误和普通 Python 脚本一样。先看第一行 Traceback,它通常会告诉你哪个文件、哪一行、什么类型的错误。
路径问题非常常见。Windows 下文件路径里的反斜杠和转义字符容易出错;包含中文或空格的文件名也可能导致编码问题。如果代码能读取文件但找不到输出目录,先确认输出目录是否存在。有些脚本不会自动创建figures目录,需要先执行mkdir -p figures。
权限问题也要看。如果你在只读目录里跑数据,或者输出到系统保护目录,Python 可能报 Permission denied。最简单的做法是统一在项目目录里操作,输入输出都在项目目录下,权限问题会少很多。
依赖版本不一致也是高频原因。同一段代码在你本机正常,换一台电脑跑就报错,很可能是 matplotlib 或 pandas 的版本差异导致。项目里建议固定版本,至少把 requirements.txt 导出一份:
pip freeze > requirements.txt6.3 图能生成但不好看
如果代码没有报错,图片也生成了,但效果不符合 Nature 级别,问题通常出在样式没有显式设置。matplotlib 的默认样式更适合快速查看,不适合直接投稿。
这时候不要重新生成整个脚本,而是给 Codex 一个明确指令:
请把全局字体改为 Arial,图片宽度设为 89 mm, 坐标轴标签字号 7 pt,刻度 6 pt, 图例去掉边框,线条宽度设为 1.5 pt, 保存时使用 300 DPI。如果能建一个统一的style.py,把这些样式参数集中管理,后续所有图都有相同的“基因”。Codex 每次生成新图时,只要求它 import 这个样式模块,而不是重新写一遍字体和尺寸参数。
6.4 图能生成但结果不稳定
同一个提示词跑两次,出来的代码可能不一样,这就是大语言模型生成代码的随机性。要减少这种随机性,最有效的办法不是反复生成,而是把“标准”从自然语言描述变成实际代码文件。
比如你把配色、字号、图例规则写在style.py里,Codex 每次只需调用,不必自己重新决定。这样即使两次生成的脚本结构不同,最终图片的风格也基本一致。
每轮对话如果改了很多次,建议把最终能用的脚本另存为新文件,并记录当时的配置。这样以后出问题,可以回退到旧版本,而不需要重新用自然语言描述整个需求。
7. 我实际落地时坚持的三个原则
7.1 先把单张图跑稳,再谈批量和自动化
这个原则听起来保守,但我就因为跳过它栽过跟头。一开始为了让 Codex 一次性生成整套图,我写了一个复杂的批量提示词,结果报错信息又多又乱,根本分不清是数据问题、代码问题还是环境问题。后来把所有图拆开,先让其中一张图从数据读取到输出完整跑通,再把它扩展成批量循环,问题一下就清晰了。
所以无论任务多急,第一步都应该是:挑一张最有代表性的图,让 Codex 从数据读取、绘图到保存全部跑通。这张图里的数据列、分组关系、误差计算方式如果能正确实现,其他图大概率只是换数据和参数。
另外要提醒一点:如果你只有三张图,而且数据格式每天都在变化,可能不值得花一下午去搭批量流程。批量脚本的维护成本是真实存在的,配置文件、错误日志、输出命名都要投入精力。先手动画完三张图,等数据结构稳定下来,再考虑自动化,反而更效率。
7.2 把风格规范固化在代码里,而不是记在脑子里
Nature Figure 相关要求不是一次性工作,而是贯穿整个投稿周期的长期约束。如果你只在第一次绘图时想起字体、DPI、宽度这些细节,第二次就很容易忘。把规范写进脚本或配置文件中,相当于给团队和未来的自己留了一套可执行的投稿标准。
我一般会在项目里放一个figure_style.py,把常用字体、尺寸、DPI、颜色、线宽、图例规则都定义好。每张图都从这里导入。Codex 生成的脚本如果绕过了这个文件,我会在审查时要求它修改,让所有图走同一套样式。
这里还有一个现实判断:投稿前和投稿后的修改成本完全不同。如果图还没投出去,风格统一慢一点问题不大;一旦进入修回阶段,编辑和审稿人可能只对个别细节提出疑问,比如“请把 p 值标记改成字母标记”,这时候如果你有一个集中管理的样式文件,改一处就能同步所有图。如果没有,重新处理几十张图会非常耗时。
7.3 保留日志、配置和原始数据,保证可追溯
自动化科研最大的风险不是自动化本身,而是过程中丢失了版本信息。Codex 帮你生成了脚本,但脚本解决问题的能力依赖当时的数据文件、配置文件、依赖版本和会话上下文。这些信息一旦丢失,脚本基本没有复现价值。
所以每次批量生成后,我会让脚本输出一份元数据文件,记录生成时间、输入文件、配置文件、Python 版本和关键依赖版本。看起来多写几行代码,但论文修回、更换设备、重新分析数据时,你会非常感谢当时留的这些信息。
还有一个小习惯:Codex 的对话记录建议定期导出。如果某次会话内容特别复杂,不要只靠终端滚动记录,把有用的提示词和产出脚本复制到 prompts/ 目录里,作为下一次迭代的起点。这样即使隔了一个月再回头做图,你也能快速进入状态。
回到最开始的问题:Codex + Nature Figure 到底能不能做出论文级图片?我的答案是能,但它不会替你完成对图表的理解。它能做的是减少重复劳动、统一风格、保证批量输出质量,而你要做的,是想清楚每张图想表达什么、数据是否存在问题、误差统计是否合理。把这部分工作做好,再用 Codex 去落地,才是自动化科研绘图比较健康的一种用法。