关于 paper-figure
paper-figure 是一项技能,可根据实验数据为研究论文生成可复现的出版级图表和比较表格。它指导研究者规划图表、生成脚本、编写 LaTeX 引用并检查渲染结果;架构图和图像网格仍需手动制作。
主要功能
- 01根据数据生成绘图
- 02生成 LaTeX 比较表
- 03创建多面板图表
- 04为每张图提供可复现脚本
- 05检查渲染结果质量
适用场景
- 01根据实验 JSON 或 CSV 绘图
- 02制作方法比较和消融图表
- 03生成相关工作的 LaTeX 比较表
- 04在论文中引用前检查图表
MCP 相关
该技能包含使用 Codex MCP 和指定评审模型检查图表的步骤,并说明每个评审环节都要先解析评审路由。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wanshuiyin/ auto-claude-code-research-in-sleep --skill paper-figure安装后在 Claude Code 中输入/paper-figure确认已加载。
详细介绍
论文插图:根据实验数据绘制出版级图表
每次评审时段开始前,请遵循 Selectable Reviewers: 解析调用方式 →
.aris/reviewer.json→ 默认使用 Claude Code(Codex MCP) 并通过规范的辅助函数解析器使用reviewer_route.py, 保留此时段的层级、全新上下文、源文件/图像输入和确定性门控。 下方的 Codex 示例/固定配置仅适用于backend=codex;其他路由使用各自的 首次调用/回复约定。保存所选路由和实际返回的身份; 无法使用的选项标记为REVIEW_UNAVAILABLE。根据实际的 模型系列/完成情况/范围对验收结果进行分类。 将调用中的 reviewer/model/effort 覆盖值传递给需要评审的子任务。生成工作线程保持不变。
根据以下内容生成论文所需的所有图和表格:$ARGUMENTS
范围:此技能能做什么,不能做什么
| 类别 | 可以自动生成? | 示例 |
|---|---|---|
| 数据驱动图表 | ✅ 可以 | 折线图(训练曲线)、柱状图(方法对比)、散点图、热力图、箱线图/小提琴图 |
| 对比表格 | ✅ 可以 | 对比已有界限、方法特征、消融结果的 LaTeX 表格 |
| 多面板图 | ✅ 可以 | 组合多个图表的子图网格(例如,3×3 数据集 × 方法) |
| 架构/流水线图 | ❌ 不可以 — 手动制作 | 模型架构、数据流图、系统概览。最多只能生成粗略的 TikZ 框架,但请做好自行使用 draw.io、Figma 或 TikZ 等工具绘制的准备 |
| 生成图像网格 | ❌ 不可以 — 手动制作 | 生成样本网格(例如,GAN/diffusion 输出)。这些需要运行你的模型生成,而非使用此技能 |
| 照片/屏幕截图 | ❌ 不可以 — 手动制作 | 真实世界图像、UI 屏幕截图、定性示例 |
实际情况: 对于典型的 ML 论文,此技能可以处理约 60% 的图表(所有数据图表和表格)。剩余约 40%(主图、架构图、定性结果)需要手动创建,并在运行 /paper-write 前放入 figures/。技能会将这些识别为“现有图表”并予以保留。
常量
- STYLE =
publication— 视觉样式预设。选项:publication(默认,适合印刷的简洁样式)、poster(更大的字体)、slide(醒目的配色) - DPI = 300 — 输出分辨率
- FORMAT =
pdf— 输出格式。选项:pdf(矢量格式,最适合 LaTeX)、png(光栅格式备用) - COLOR_PALETTE =
tab10— 默认 matplotlib 配色循环。选项:tab10、Set2、colorblind(适合红绿色盲) - FONT_SIZE = 10 — 基础字号(符合会议论文常用正文字号)
- FIG_DIR =
figures/— 生成图表的输出目录 - REVIEWER_MODEL =
gpt-6-astra— 通过 Codex MCP 用于图表质量评审的模型。
输入
- PAPER_PLAN.md — 图表规划表(来自
/paper-plan) - 实验数据 — 位于
figures/或项目根目录中的 JSON 文件、CSV 文件或屏幕日志 - 现有图表 — 需要保留的任何手动创建图表
如果不存在 PAPER_PLAN.md,请扫描数据文件,并询问用户要生成哪些图表。
工作流
步骤 1:读取图表规划
解析 PAPER_PLAN.md 中的图表规划表:
| ID | Type | Description | Data Source | Priority |
|----|------|-------------|-------------|----------|
| Fig 1 | Architecture | ... | manual | HIGH |
| Fig 2 | Line plot | ... | figures/exp.json | HIGH |
识别:
- 哪些图表可以根据数据自动生成
- 哪些需要手动制作(架构图等)
- 哪些是对比表格(以 LaTeX 格式生成)
步骤 2:设置绘图环境
创建共享样式配置脚本:
# paper_plot_style.py — shared across all figure scripts
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams.update({
'font.size': FONT_SIZE,
'font.family': 'serif',
'font.serif': ['Times New Roman', 'Times', 'DejaVu Serif'],
'axes.labelsize': FONT_SIZE,
'axes.titlesize': FONT_SIZE + 1,
'xtick.labelsize': FONT_SIZE - 1,
'ytick.labelsize': FONT_SIZE - 1,
'legend.fontsize': FONT_SIZE - 1,
'figure.dpi': DPI,
'savefig.dpi': DPI,
'savefig.bbox': 'tight',
'savefig.pad_inches': 0.05,
'axes.grid': False,
'axes.spines.top': False,
'axes.spines.right': False,
'text.usetex': False, # set True if LaTeX is available
'mathtext.fontset': 'stix',
})
# Color palette
COLORS = plt.cm.tab10.colors # or Set2, or colorblind-safe
def save_fig(fig, name, fmt=FORMAT):
"""Save figure to FIG_DIR with consistent naming."""
fig.savefig(f'{FIG_DIR}/{name}.{fmt}')
print(f'Saved: {FIG_DIR}/{name}.{fmt}')
第 3 步:自动选择图表类型
使用此决策树选择数据驱动图表(灵感来自 Imbad0202/academic-research-skills):
| 数据模式 | 推荐类型 | 尺寸 |
|---|---|---|
| X=时间/步骤,Y=指标 | 折线图 | 0.48\textwidth |
| 方法 × 1 项指标 | 条形图 | 0.48\textwidth |
| 方法 × 多项指标 | 分组条形图 / 雷达图 | 0.95\textwidth |
| 两个连续变量 | 散点图 | 0.48\textwidth |
| 矩阵 / 网格值 | 热力图 | 0.48\textwidth |
| 分布对比 | 箱线图/小提琴图 | 0.48\textwidth |
| 多数据集结果 | 多面板(子图) | 0.95\textwidth |
| 与先前工作的对比 | LaTeX 表格 | — |
第 4 步:生成每个图表
为计划中的每个图表创建一个独立的 Python 脚本:
折线图(训练曲线、缩放):
# gen_fig2_training_curves.py
from paper_plot_style import *
import json
with open('figures/exp_results.json') as f:
data = json.load(f)
fig, ax = plt.subplots(1, 1, figsize=(5, 3.5))
ax.plot(data['steps'], data['fac_loss'], label='Factorized', color=COLORS[0])
ax.plot(data['steps'], data['crf_loss'], label='CRF-LR', color=COLORS[1])
ax.set_xlabel('Training Steps')
ax.set_ylabel('Cross-Entropy Loss')
ax.legend(frameon=False)
save_fig(fig, 'fig2_training_curves')
条形图(对比、消融实验):
fig, ax = plt.subplots(1, 1, figsize=(5, 3))
methods = ['Baseline', 'Method A', 'Method B', 'Ours']
values = [82.3, 85.1, 86.7, 89.2]
bars = ax.bar(methods, values, color=[COLORS[i] for i in range(len(methods))])
ax.set_ylabel('Accuracy (%)')
# Add value labels on bars
for bar, val in zip(bars, values):
ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.3,
f'{val:.1f}', ha='center', va='bottom', fontsize=FONT_SIZE-1)
save_fig(fig, 'fig3_comparison')
对比表格(LaTeX,用于理论论文):
\begin{table}[t]
\centering
\caption{Comparison of estimation error bounds. $n$: sample size, $D$: ambient dim, $d$: latent dim, $K$: subspaces, $n_k$: modes.}
\label{tab:bounds}
\begin{tabular}{lccc}
\toprule
Method & Rate & Depends on $D$? & Multi-modal? \\
\midrule
\citet{MinimaxOkoAS23} & $n^{-s'/D}$ & Yes (curse) & No \\
\citet{ScoreMatchingdistributionrecovery} & $n^{-2/d}$ & No & No \\
\textbf{Ours} & $\sqrt{\sum n_k d_k / n}$ & No & Yes \\
\bottomrule
\end{tabular}
\end{table}
架构/流程图(手动绘制——不在此技能的范围内):
- 这些图表需要使用 draw.io、Figma、Keynote 或 TikZ 手动创建
- 此技能可以生成粗略的 TikZ 框架作为起点,但不要期待达到出版级的效果
- 如果图表已存在于
figures/中,请保留它,并仅生成 LaTeX\includegraphics代码片段 - 在图表计划和
latex_includes.tex中标记为[MANUAL]
第 5 步:运行所有脚本
# Run all figure generation scripts
for script in gen_fig*.py; do
python "$script"
done
确认所有输出文件均存在且非空。然后先渲染,再检查: 重新打开每个已渲染的 PDF/PNG(而非脚本)并自行检查——确保没有标签被裁切、图例没有遮挡数据,且所有数字/标签在最终印刷尺寸下均清晰可读。这项自查应在第 7 步的评审之前完成,以便评审者将精力用于实质内容,而不是发现被裁切的坐标轴。
第 6 步:生成 LaTeX 引用代码片段
为每个图表输出用于引用它的 LaTeX 代码:
% === Fig 2: Training Curves ===
\begin{figure}[t]
\centering
\includegraphics[width=0.48\textwidth]{figures/fig2_training_curves.pdf}
\caption{Training curves comparing factorized and CRF-LR denoising.}
\label{fig:training_curves}
\end{figure}
将所有代码片段保存到 figures/latex_includes.tex,以便轻松复制粘贴到论文中。
第 7 步:使用 REVIEWER_MODEL 进行图表质量评审
将图表描述和图注发送给 GPT-6-Astra 进行评审:
请先解析此评审者槽位;以下是
backend=codex示例。
mcp__codex__codex:
model: gpt-6-astra
config: {"model_reasoning_effort": "xhigh"}
prompt: |
Review these figure/table plans for a [VENUE] submission.
For each figure:
1. Is the caption informative and self-contained?
2. Does the figure type match the data being shown?
3. Is the comparison fair and clear?
4. Any missing baselines or ablations?
5. Would a different visualization be more effective?
[list all figures with captions and descriptions]
步骤 8:质量检查清单
此检查清单分为两类(模式源自 Anthropic 的 Claude Science
figure-style 技能,采用 Apache-2.0 许可):正确性规则始终具有约束力——它们关乎图表是否如实呈现,不涉及审美;任何风格选择都不得凌驾于这些规则之上;指导规则是默认做法——它们有助于产出整洁的结果,但可以采用经过说明的刻意替代方案。
正确性——始终具有约束力;渲染前须对照数据核验:
- 排除的数据绝不进入汇总——在源数据中被排除/标记的行,要么完全消失,要么以明显不同的方式绘制(空心/阴影标记,并在图例中注明);绝不能用于计算与纳入行并列绘制的均值/置信区间
- 对标题说明类文字中的所有断言,都要针对每一条绘制的数据进行检验——如果某个类别与断言相矛盾,就加以限定(“在 4 项基准中的 3 项上”),或改为描述性文字;即使图表渲染得再漂亮,夸大结论仍然是错误的
- 仅比较条件相同的数据——在不同 N / 预算 / 协议下测量的组别,不得作为视觉上的同类项绘制;应将它们分开,或在图注中标明差异
- 注明 n 和固定不变的条件——每个带有汇总标记的面板都要注明 n 和重复单位(在面板或图注中)
- 渲染后再核验——确实完成了步骤 5 中对渲染后 PDF/PNG 的自检(而非检查脚本):没有被裁切的标签、图例不遮挡数据,并且所有数字/标签在最终印刷尺寸下都清晰可读
指导规则——强烈建议的默认做法(源自 pedrohcgs/claude-code-my-workflow),可采用经过说明的刻意替代方案;但以下关键规则另有规定的项目除外(矢量 PDF 输出和图表内不加标题是关键规则:应视为具有约束力,不得替代):
- 字体大小在纸张印刷尺寸下清晰可读(不要太小)
- 颜色在灰度下可区分(适合印刷)
- 图表内不加标题——标题只能放在 LaTeX
\caption{}中(源自 pedrohcgs) - 图例不与数据重叠
- 适用时,坐标轴标签应注明单位
- 坐标轴标签达到出版质量(不要使用
emp_rate这类变量名) - 图表宽度适合单栏(0.48\textwidth)或通栏(0.95\textwidth)
- PDF 输出为矢量格式(文字不能栅格化)
- 不使用 matplotlib 默认标题(用于出版时移除
plt.title) - 衬线字体与论文正文一致(Times / Computer Modern)
- 使用便于色盲读者辨别的颜色(如采用色盲友好配色)
输出
figures/
├── paper_plot_style.py # shared style config
├── gen_fig1_architecture.py # per-figure scripts
├── gen_fig2_training_curves.py
├── gen_fig3_comparison.py
├── fig1_architecture.pdf # generated figures
├── fig2_training_curves.pdf
├── fig3_comparison.pdf
├── latex_includes.tex # LaTeX snippets for all figures
└── TABLE_*.tex # standalone table LaTeX files
关键规则
- 每张图都必须可复现——将生成脚本与输出文件一并保存
- 不要硬编码数据——始终从 JSON/CSV 文件读取
- 所有图表均使用矢量格式(PDF)——仅在无法使用时才用 PNG
- 不添加装饰元素——不要使用背景色、3D 效果或无关图表元素
- 所有图表的风格保持一致——字体、颜色、线宽均相同
- 使用色盲安全配色——如有需要,通过 https://davidmathlogic.com/colorblind/ 进行核验
- 每张图使用一个脚本——数据变更时便于单独重新生成图表
- 图表内不加标题——图注只放在 LaTeX 中
- 比较表也算作图表——将其生成为独立的 .tex 文件
图表类型参考
| 类型 | 适用场景 | 典型尺寸 |
|---|---|---|
| 折线图 | 训练曲线、缩放趋势 | 0.48\textwidth |
| 柱状图 | 方法比较、消融实验 | 0.48\textwidth |
| 分组柱状图 | 多指标比较 | 0.95\textwidth |
| 散点图 | 相关性分析 | 0.48\textwidth |
| 热力图 | 注意力、混淆矩阵 | 0.48\textwidth |
| 箱线图/小提琴图 | 分布比较 | 0.48\textwidth |
| 架构图 | 系统概览 | 0.95\textwidth |
| 多面板图 | 组合结果(子图) | 0.95\textwidth |
| 比较表 | 既有界限与我们的结果(理论) | 全宽 |
致谢
设计模式(类型 × 风格矩阵)受 baoyu-skills 启发。出版风格默认设置和图示规则来自 pedrohcgs/claude-code-my-workflow。可视化决策树来自 Imbad0202/academic-research-skills。