mcpField
P
paper-figure

paper-figure

github.com/wanshuiyin数据与数据库18.2k634 次安装4 天前更新
代码仓库

关于 paper-figure

paper-figure 是一项技能,可根据实验数据为研究论文生成可复现的出版级图表和比较表格。它指导研究者规划图表、生成脚本、编写 LaTeX 引用并检查渲染结果;架构图和图像网格仍需手动制作。

主要功能

  1. 01根据数据生成绘图
  2. 02生成 LaTeX 比较表
  3. 03创建多面板图表
  4. 04为每张图提供可复现脚本
  5. 05检查渲染结果质量

适用场景

  1. 01根据实验 JSON 或 CSV 绘图
  2. 02制作方法比较和消融图表
  3. 03生成相关工作的 LaTeX 比较表
  4. 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 用于图表质量评审的模型。

输入

  1. PAPER_PLAN.md — 图表规划表(来自 /paper-plan)
  2. 实验数据 — 位于 figures/ 或项目根目录中的 JSON 文件、CSV 文件或屏幕日志
  3. 现有图表 — 需要保留的任何手动创建图表

如果不存在 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。

评论

支持 Markdown