
论文返修阶段最折磨人的往往不是数据分析本身而是同一张图反复改版本——审稿人说散点太密、图例看不清导师说配色不够统一出版社要求同时提交 300dpi 的 PNG 和 PDF字号还得符合排版规范。手动调参数不仅重复还容易漏改。Codex 这类 AI 编程工具出现后科研绘图的很多重复劳动是可以自动化的你告诉它需求它生成绘图脚本你审查、运行、微调最后批量导出论文级图片。本文不吹嘘“全自动科研”而是围绕一条真正可落地的路线展开Codex 如何安装、如何写出高质量的绘图需求、Nature Figure 到底意味着什么以及从 CSV 数据到可投稿图片的完整实战。适合正在写论文、做实验汇报、需要批量出图的研究生和工程师阅读。1. 为什么科研绘图需要自动化1.1 科研绘图的老大难多数科研人员的绘图流程是Excel 整理数据 → Python 或 Origin 画图 → PowerPoint 微调 → 导出图片。步骤本身没问题但真正进入论文准备期后问题会集中爆发图表数量多。一篇正文三到五张主图每张图又包含 a、b、c、d 多个子图加起来十几个画布需要统一风格。风格要求严格。不同期刊对字体、字号、线宽、分辨率要求不同改了一个图其他图也要跟着改。可复现性差。很多人是手动在软件里拖拽完成的数据更新后需要重新画一遍无法一键生成。版本混乱。最终投稿时经常同时存在figure1_final、figure1_new、figure1_最终版这类文件很容易提交错误版本。这些问题并不是科研能力问题而是工作流设计问题。把绘图流程脚本化、参数化是解决上述问题的关键一步。1.2 自动化科研的分工方式自动化科研并不是让 AI 替代科研人员思考而是把“重复执行”的部分交给程序。一条典型的科研链路是实验设计需要人判断AI 可以辅助查文献。数据采集设备或爬虫完成有些环节可以脚本化。数据处理清洗、去重、统计检验非常适合脚本自动化。图表绘制从数据到图片同样适合脚本化并且最容易见效。论文写作AI 可以帮助润色但数据真实性必须人工把关。审稿回复可以辅助组织语言但回复策略需要人决定。其中数据处理和图表绘制是两个投入产出比最高的自动化环节。Codex 在这两个环节里扮演的不是“直接给你一张成品图”而是“帮你写出能生成成品图的程序”并且可以反复迭代。1.3 本文你能获得什么读完本文你可以掌握在本地环境安装并配置 Codex。用自然语言描述绘图需求让 Codex 生成结构化、可复用的 Python 绘图脚本。理解期刊图表Nature Figure的通用排版规范并把这些规范写到提示词中。处理数据读取、统计拟合、图片导出等常见任务。遇到 Codex 安装、配置、调用报错时有清晰的排查思路。2. Codex 和 Nature Figure 分别是什么2.1 Codex从对话到可运行代码的 AI 编程工具Codex 是 OpenAI 推出的 AI 编程工具形态包括命令行工具Codex CLI、桌面端应用和 IDE 扩展。它能做的事情和传统 AI 助手不太一样可以读取当前目录下的文件理解项目上下文。可以在你授权后执行命令比如安装依赖、运行测试脚本。可以自主修改多个文件而不是只输出一段代码让你自己粘贴。可以通过会话形式持续迭代比如“刚才的图例位置还是不对换成左上角”。实际使用体验是你可以把它理解成一位坐在你旁边的编程搭档。它不是一个只能回答问题的聊天框而是能在终端里真正“动手”的工具。这一点对科研绘图非常关键。你不需要把数据手动粘贴到对话框里只要告诉它数据文件位置它就能读取、处理并完成绘图。2.2 Nature Figure不是软件是一套质量标准需要先澄清一个概念——Nature Figure并不是某个官方绘图软件也不是一个可以直接安装的 Python 库而是科研社区对“能达到 Nature 系列期刊排版要求”的图表质量的一种约定俗成描述。Nature 等高水平期刊对图表的通用要求包括尺寸合理。单栏图通常 89mm 宽双栏图 183mm 宽。字体统一。常用 Arial 或 Helvetica图中文字一般在 6 到 8pt。分辨率足够。位图至少 300dpi同时会要求提供矢量图 PDF 或 AI 文件。配色专业。避免高饱和色尽量使用色盲友好配色。信息简洁。去掉背景网格、多余边框、无关图例让数据本身说话。多图风格一致。同一篇论文里所有图的字号、线宽、配色系统保持一致。因此当我们说“用 Codex 做出 Nature Figure”准确含义是用自然语言把上述质量要求翻译成绘图代码由 Codex 生成符合这些规范的图片。2.3 两者结合后的工作流把 Codex 和 Nature Figure 质量标准放在一起就形成了一条高效流水线原始数据 CSV ↓ Codex 读取并检查数据 ↓ 生成 matplotlib 绘图脚本 ↓ 自动执行脚本输出 PNG PDF ↓ 人工检查统计结果和图形表达 ↓ 调整提示词迭代修改样式 ↓ 最终图片进入论文在这个流程里人的注意力放在“数据是否合理、图形是否准确传达了科学信息”上Codex 负责把样式要求变成精确的代码参数。3. 环境准备与安装3.1 前置条件Codex 的安装和运行需要满足以下基本条件操作系统macOS、Linux 或 Windows。Windows 用户如果使用命令行版本推荐通过 WSL 获得更完整的终端体验。Node.js 环境Codex CLI 主要通过 npm 分发需要安装 Node.js 18 或更高版本。Python 环境虽然 Codex 本身不依赖 Python但科研绘图脚本通常用 Python 编写建议准备 Anaconda 或官方 Python 3.10 以上环境。账号与网络Codex 需要登录 OpenAI 账号并配置 API 认证信息。网络环境需要能够正常访问对应服务。以上环境描述以通用情况为准具体版本要求请以 Codex 官方文档为准。版本更新较快不建议照着网上的旧教程硬套。3.2 安装 Codex CLI在终端执行npm install -g openai/codex安装完成后可以验证是否成功codex --version如果你不是第一次使用 npm 全局安装包可能会遇到权限错误。此时不建议直接加sudo更安全的做法是配置用户级 npm 全局目录或者使用 nvm 管理 Node.js 环境。如果你是 Mac 用户也可以尝试通过 Homebrew 安装具体命令请以官方仓库 README 为准。不同系统的安装方式略有差异关键是保证codex命令能被终端找到。安装完成后第一次运行 Codex 时需要登录授权。按终端提示操作即可授权完成后会生成本地凭据后续使用不需要重复登录。3.3 桌面版与 IDE 扩展Codex 除了命令行版本还提供桌面端应用和 IDE 扩展。它们解决的问题不同Codex 桌面版提供图形界面适合不习惯命令行的用户。可以直观看到 Codex 的计划、文件改动和执行日志。VS Code 扩展在编辑器内直接唤起 Codex支持选中代码片段后让 Codex 修改非常契合代码审查和重构场景。JetBrains 系列 IDE部分版本也支持安装 Codex 插件具体以插件市场情况为准。对于科研绘图这个场景我的建议是优先使用 CLI 或桌面版。因为绘图代码通常不是一次写完的你需要让 Codex 在项目目录下反复读取数据、修改脚本、运行命令这种流程在独立项目中运行更清晰。3.4 建议的项目结构为了让 Codex 高效工作建议在开始绘图前先建立一个规范的项目目录paper_figure/ ├── data/ # 原始数据文件 ├── scripts/ # 数据处理与绘图脚本 ├── output/ # 导出的图片 ├── styles.py # 统一样式参数 └── README.md # 生成流程说明Codex 在读取项目时会根据目录结构判断上下文。你把数据放在data/下、输出放在output/下它写出来的代码也会自动遵循这个结构避免路径混乱。4. Codex 使用基础4.1 交互式会话在项目目录下启动 Codexcodex进入交互界面后你可以像聊天一样输入任务描述。例如读取 data 目录下的 data.csv先打印前 5 行说明每一列的含义。Codex 会读取文件、生成命令并执行。如果它需要修改文件或运行命令会先征求你的同意。这个过程是逐步确认的你可以在任何一步喊停或者要求它修改方案。交互式会话适合探索性任务比如“先看看数据长什么样”“这张图能不能换个配色”。缺点是每次重新启动后上下文会丢失所以正式的大任务建议用非交互模式配合脚本。4.2 非交互模式如果你已经清楚任务需求可以直接通过命令行传入描述codex 读取 data.csv生成一张散点图并保存到 output 目录这类模式适合批处理也方便把绘图需求保存成文本文件需要时反复执行。对科研绘图来说我建议把绘图需求写成一个requirements.md文件让 Codex 按文件执行这样需求本身也留档了。恢复之前的会话可以使用codex resume不同版本的命令参数有差异运行codex --help可以查看当前版本的帮助信息。4.3 模型与 API 配置Codex 默认使用 OpenAI 的模型服务。如果你希望接入其他兼容 OpenAI 接口的模型服务例如 DeepSeek 等第三方模型平台通常需要通过环境变量或配置文件修改 API 地址和模型名称。这种方式在社区中比较常见配置时要注意几点不同 Codex 版本读取环境变量的名称可能不同查看版本文档是最稳妥的方式。第三方服务的 API Key 和 OpenAI 的 Key 是独立的不要混用。修改 API 地址后请求日志和对话内容会经过第三方服务需要注意数据保密尤其不要上传未脱敏的实验数据。如果配置出错经常表现为请求失败、一直转圈、模型不存在等。排查时优先查看配置文件和日志输出。另外有一些开源工具可以实现多个模型服务商之间的配置切换。这些工具本质上是一个本地转发服务把 Codex 发出的请求转发到你选中的模型端点。它们本身并不复杂但会增加一层故障点后面常见问题部分会展开说明。4.4 如何写好绘图需求提示词Codex 生成代码的质量和提示词的质量高度相关。写绘图需求时建议包含以下要素角色定位。告诉 Codex 它是一名科研数据可视化工程师。数据来源。明确数据文件的路径和格式。绘图类型。散点图、柱状图、箱线图还是组合图。具体样式。画布尺寸、字体、字号、配色、线宽、图例位置。统计信息。是否需要拟合、误差线、显著性标记。输出要求。PNG 分辨率、是否同步输出 PDF。约束条件。比如“不要使用 seaborn 默认样式”“不要修改原始数据文件”。一个完整提示词的例子你是科研数据可视化工程师。 读取当前目录下 data/data.csv文件第一行是列名 x,y。 生成一张符合 Nature 期刊排版要求的图 1. 画布宽度 89mm其他尺寸按比例调整 2. 使用 Arial 字体图中所有文字 8pt 3. 散点颜色 #4C72B0半透明白色描边 4. 对数据做一次线性拟合画出拟合线颜色 #C44E52 5. 图例无边框放在左上角 6. 坐标轴刻度朝内 7. 保存到 output/figure1.pngdpi300 8. 同时另存一份 output/figure1.pdf。 不要修改原始数据文件不要在图中添加网格。这样写的好处是Codex 不需要猜测你的意图。即使它第一版生成不完全符合预期后续迭代也只需要针对某一点进行修改而不是推翻重来。5. 实战从 CSV 到论文级图片这一节我们完整走一遍流程。假设你是一名研究人员实验产出了一组数据横轴是时间纵轴是响应值需要画出散点加线性拟合图并且要符合高水平期刊的排版要求。5.1 准备项目结构和数据首先创建项目目录mkdir -p paper_figure/data paper_figure/scripts paper_figure/output cd paper_figure然后准备一份示例数据data/data.csv。实际项目中你可以用自己的真实实验数据这里为了便于复现我们使用一段模拟数据。# 文件路径paper_figure/scripts/generate_data.py import numpy as np np.random.seed(42) x np.linspace(0, 10, 50) y 2.0 * x np.random.normal(0, 0.8, len(x)) data np.column_stack([x, y]) np.savetxt( data/data.csv, data, delimiter,, headerx,y, comments, fmt%.4f, ) print(data/data.csv generated.)运行这段脚本生成数据python scripts/generate_data.py执行后data/data.csv前几行大概长这样x,y 0.0000,0.5916 0.2041,0.5979 0.4082,1.72735.2 给 Codex 的完整任务描述在项目根目录执行codex然后在交互界面粘贴任务描述你是科研数据可视化工程师。 读取 data/data.csv文件第一行是列名 x,y。 生成一张符合 Nature 期刊排版要求的图 1. 画布宽度 89mm比例接近 4:3 2. 使用 Arial 字体图中所有文字 8pt 3. 散点使用颜色 #4C72B0半透明白色描边 4. 对数据做一次线性拟合画出拟合线颜色 #C44E52 5. 图例无边框放在左上角 6. 坐标轴刻度朝内去掉上方和右侧边框 7. 保存到 output/figure1.pngdpi300 8. 同时另存一份 output/figure1.pdf 9. 使用 matplotlib 完成不要修改原始数据文件不要在图中添加网格。Codex 会给出它的执行计划确认后会创建脚本并运行。如果这是你第一次执行它可能需要安装 matplotlib 依赖。你可以允许它在当前 Python 环境中安装或者提前手动安装pip install matplotlib numpy5.3 参考实现科研风格绘图代码上面任务的一种合理实现如下。这个脚本是把 Codex 生成的结果经过人工整理后的最终版本你可以直接复制到scripts/plot_figure.py中运行# 文件路径paper_figure/scripts/plot_figure.py import os import numpy as np import matplotlib.pyplot as plt from matplotlib import rcParams # 确保输出目录存在 os.makedirs(output, exist_okTrue) # 读取数据 data np.loadtxt(data/data.csv, delimiter,, skiprows1) x data[:, 0] y data[:, 1] # 线性拟合 coef np.polyfit(x, y, deg1) print(f拟合结果: y {coef[0]:.3f}x {coef[1]:.3f}) line_x np.linspace(0, 10, 100) line_y np.polyval(coef, line_x) # 全局样式Nature 风格 rcParams[font.family] Arial rcParams[font.size] 8 rcParams[axes.linewidth] 0.8 rcParams[xtick.direction] in rcParams[ytick.direction] in rcParams[xtick.top] False rcParams[ytick.right] False # 画布宽度 89mm ≈ 3.5 inch fig, ax plt.subplots(figsize(3.5, 2.8)) ax.scatter( x, y, s12, color#4C72B0, alpha0.75, edgecolorswhite, linewidth0.3, labelObserved data, ) ax.plot( line_x, line_y, color#C44E52, linewidth1.2, labelfFit: y{coef[0]:.2f}x{coef[1]:.2f}, ) ax.set_xlabel(Time (h)) ax.set_ylabel(Response (a.u.)) ax.set_xlim(0, 10) ax.set_ylim(0, 24) ax.legend(frameonFalse, locupper left) plt.tight_layout() fig.savefig(output/figure1.png, dpi300) fig.savefig(output/figure1.pdf) print(图片已保存到 output/figure1.png 和 output/figure1.pdf)5.4 运行与验证如果你使用上面的脚本手动运行python scripts/plot_figure.py预期输出拟合结果: y 1.985x 0.372 图片已保存到 output/figure1.png 和 output/figure1.pdf打开output/figure1.png你应该看到一张宽度适合单栏排版的散点加拟合线图。散点颜色偏蓝半透明带有白色描边。拟合线为红色图例中没有边框。坐标轴刻度朝内整体风格简洁。如果图片不符合预期直接继续在 Codex 对话中提出修改意见散点太大了缩小到原来的三分之一。 拟合线太粗改成 1.0。 图的标题不要显示在图里我只需要坐标轴标签。Codex 会定位脚本中的对应参数并修改。5.5 批量修改样式的小技巧当论文有多张图时最忌讳每个绘图脚本里都重复写一遍样式参数。推荐的方式是把样式抽离到styles.py。# 文件路径paper_figure/styles.py import matplotlib.pyplot as plt from matplotlib import rcParams # 全论文统一风格配置文件 COLOR_PRIMARY #4C72B0 COLOR_SECONDARY #C44E52 COLOR_TERTIARY #55A868 FONT_FAMILY Arial FONT_SIZE 8 FIGURE_WIDTH_SINGLE_COLUMN 3.5 # 89mm def apply_journal_style(): rcParams[font.family] FONT_FAMILY rcParams[font.size] FONT_SIZE rcParams[axes.linewidth] 0.8 rcParams[xtick.direction] in rcParams[ytick.direction] in rcParams[xtick.top] False rcParams[ytick.right] False其他绘图脚本只需要# 文件路径paper_figure/scripts/plot_figure.py简化版 import sys sys.path.append(.) import styles styles.apply_journal_style()这样一来如果出版社要求把字体从 Arial 改成 Helvetica你只需要修改styles.py然后重新运行所有脚本。这一步对论文投稿阶段极其有用——图越多收益越大。6. 常见问题与排查思路使用 Codex 做科研绘图遇到的报错主要集中在安装、调用和绘图输出三个环节。6.1 安装和启动类问题问题现象常见原因解决思路codex: command not foundnpm 全局目录不在 PATH 中检查 npm 全局 bin 目录并配置到 PATH安装时提示权限不足全局安装目录无写权限使用用户级 npm 目录或 nvm 管理 Node.jsunable to locate the codex cli binaryIDE 插件找不到 codex 可执行文件确认 CLI 安装成功并在插件设置中指定二进制路径启动后一直显示重新连接网络不稳定或服务端异常检查当前网络对目标服务是否可用重新登录授权补充说明一点Codex 桌面版和 IDE 扩展对网络状态比较敏感。如果服务端暂时不可用界面会显示“正在重新连接”。这种情况通常不是你的配置问题可以等待片刻再重试。6.2 模型和 API 调用类问题问题现象常见原因解决思路请求报错connection failed: error sending request网络不通、API 地址配置错误或认证失败检查 API 地址、Key、网络连通性查看详细日志报错the gpt-5.6-sol model is not supported when using codex with a chatgpt account当前账号或配置方式不支持指定模型修改模型名为当前环境支持的模型或检查兼容层配置使用本地配置切换工具时报local proxy failed while handling codex endpoint /responses本地转发服务处理请求失败检查本地转发服务进程、日志、模型名和鉴权配置Codex 可以对话但无法执行代码当前会话缺少执行权限或沙盒受限查看权限提示调整执行策略后重试cc switch local proxy failed while handling codex endpoint /responses. provi这类报错核心含义是本地转发层在把 Codex 请求转给目标模型服务时处理/responses端点失败。/responses是 Codex 后端 API 用来生成回答的端点。排查顺序建议如下确认本地转发服务进程正常启动。打开转发服务日志定位具体错误。确认你选择的模型在当前服务商可用。确认 Codex 版本与转发服务兼容。尝试重启本地转发服务或在配置中切换其他模型。还有一个高频问题本地模型服务返回 404但 Codex 界面没有明确提示。这通常是因为模型名写错或者当前服务商不支持该模型。建议先用接口调试工具手动发送一次请求验证模型名是否有效。6.3 绘图输出类问题问题现象常见原因解决思路图中中文显示为方块系统缺少中文字体指定中文字体如 SimHei或图中改用英文导出图片模糊dpi 设置过低使用dpi300正式投稿另存 PDF图例和坐标轴文字重叠画布尺寸不合适调整figsize或使用tight_layout()保存 PDF 后图片字体丢失字体未嵌入或不受支持检查 matplotlib 字体配置使用 Arial 等常见字体运行脚本提示找不到data.csv工作目录不在项目根目录确认脚本从项目根目录运行或使用绝对路径中文乱码是 matplotlib 的老问题。如果你的论文是中文环境需要在绘图脚本中额外配置中文字体。最简单的方式之一rcParams[font.sans-serif] [SimHei, Arial] rcParams[axes.unicode_minus] False但期刊投稿一般建议图表使用英文这样能避免字体问题也符合多数国际期刊的排版惯例。7. 最佳实践与工程建议7.1 提示词工程把需求写清楚是 Codex 生成高质量代码的前提。这里有几个经过实践检验的建议需求要具体。不要说“画一个好看的图”要说“画布 3.5 英寸宽散点颜色 #4C72B0坐标轴刻度朝内”。数据路径要明确。告诉 Codex 数据文件的相对路径避免它自己猜测。样式参数集中管理。把配色、字体、线宽统一放在styles.py中Codex 修改样式时只需要改一个文件。每一次只改一个点。在迭代修改时不要同时提七八个修改需求这样容易引入新问题。保留需求文档。把完整的绘图需求写成requirements.md放进项目目录方便日后重新生成或交接给他人。7.2 科研诚信与安全边界这是自动化科研里最需要强调的部分。AI 可以帮你生成代码、调用统计函数、画出精美的图但它不能替你验证数据来源的真实性。使用 Codex 时要注意生成的统计结果要人工复核。至少使用另一种方法或独立脚本验证关键数字。不要用 AI 生成或修饰实验数据。拟合曲线不能偏离真实数据分布去“美化”。检查图片是否具有误导性。坐标轴范围、截断区间、颜色映射都可能改变读者对数据的直觉判断。涉及未发表数据时注意 API 请求的隐私风险。不要把未脱敏的受试者数据直接发送给第三方模型服务。另外Codex 在本地执行命令时拥有一定权限建议在可信项目目录中使用并且不要轻易让它执行来源不明的命令。7.3 项目可维护性科研绘图自动化最大的价值之一是可复现。为了让三个月后的自己还能重新生成论文里的图建议数据文件只读任何清洗和转换结果输出到独立目录。绘图脚本保持幂等。同一个输入反复运行输出结果一致。记录环境依赖。使用requirements.txt或environment.yml固定 Python 依赖版本。图片文件命名清晰。推荐格式figure1_v1.png、figure1_v2.png或者直接使用 Git 管理整个项目。每次修改都提交到版本控制。这样即使后续改坏了也能回退到之前的图。Codex 生成的代码不一定是最优代码但经过你的审查和版本管理它会慢慢变成你自己的可复现工具链。7.4 更进一步的自动化当你熟悉了以上流程可以继续探索批量绘图。用循环脚本遍历多个 CSV 文件一次性生成所有主图和补充材料图。CI 自动化。在论文项目中配置自动执行脚本数据更新后自动重绘所有图片。使用 codex harness 等工具把 Codex 嵌入自己的 Python 流程中实现更复杂的自动化任务。结合统计报告工具让模型在出图的同时生成图片说明文本辅助论文撰写。这些进阶方向的核心都一样把人的判断力留给科学问题把重复劳动留给脚本。8. 总结与下一步学习路线本文从科研绘图的重复劳动痛点出发介绍了 Codex 的安装、使用思路以及 Nature Figure 背后代表的高质量图表规范并用一个完整的示例演示了如何从数据文件生成论文级图片。你至少应该带走这几个关键点Codex 不是“一句话生成成品图”的玩具而是一个能在项目目录里读写文件、执行命令的编程工具。Nature Figure 是质量标准不是软件。它代表字体、配色、尺寸、分辨率、信息密度等一套可执行参数。提示词决定上限。写清楚角色、数据、样式、输出约束Codex 才能稳定产出可用的绘图代码。样式参数集中管理是处理多图论文的核心手段。AI 生成的统计结果和图片必须经过人工复核。下一步可以尝试用自己的实验数据替换示例中的 CSV跑通完整流程。把一套图的多个子图合并成组合图并统一风格。在项目中加入版本控制把每次 Codex 生成的代码变更记录下来。学习更多 matplotlib 高级用法比如双坐标轴、误差带、分面绘图这些是高水平论文的常备技能。科研绘图这件事不需要你成为前端设计师也不需要你精通每一种绘图库的细节。你只需要把需求描述清楚让 Codex 完成参数层面的劳动然后你把省下来的时间拿去审视数据本身——那才是论文真正重要的部分。