关于 figure-planner
figure-planner 是面向研究人员的科研配图规划技能,帮助厘清图表与 Results 文本的关系。它围绕核心论点安排整幅图,为面板分配职责,并检查图例和视觉呈现。
主要功能
- 01围绕单一核心论点规划图表
- 02为每个面板分配主要职责
- 03划分主图与补充材料内容
- 04对齐图例、面板与 Results 文本
- 05检查字体、配色与版式
适用场景
- 01重组内容过载的多面板图
- 02决定哪些结果移至补充材料
- 03使图例与 Results 文本保持一致
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ boom5426/ nature-paper-skills --skill figure-planner安装后在 Claude Code 中输入/figure-planner确认已加载。
详细介绍
图表规划器
概述
当瓶颈不再是写句子,而是图表逻辑时,使用此技能。目标是让每张图都承担站得住脚的科学任务,确保各面板彼此协调,并保证图注与结果正文讲述同一个故事。
此技能的适用范围比 manuscript-optimizer 窄。若整篇论文的结构不稳定,请使用 manuscript-optimizer。若核心问题是每张图应证明什么、各面板应发挥什么作用,请使用 figure-planner。
适用场景
遇到以下情况时使用此技能:
- 图表显得内容过载、支离破碎或难以概括
- 论文中的结果小节过多,且都是由面板数量决定的
- 不清楚哪些内容应放在主图、哪些应放在补充材料中
- 图注、面板字母标注和结果正文可能已经不一致
- 需要围绕论点而非绘图便利性,重新设计图表标题或面板分组
以下情况请勿使用此技能:
- 仅需进行低层级的视觉样式调整
- 不改动图表的最终校对
- 超出图表范围的全文论点结构调整
核心原则
每张主图都应凭借一个核心论点证明其价值。
如果无法用一句简洁的话概括一张图,请:
- 拆分该图,
- 将其中一部分移至补充材料,
- 或围绕更清晰的论点重写该图。
面板作用
撰写图注或结果段落之前,先为每个面板分配一个主要作用:
- 支持论点的证据
- 方法衔接或定义
- 在新条件下进行验证
- 排名或基准比较
- 转化或实际影响
- 案例说明
- 作为发现明确陈述的无效或阴性结果
不要让一个面板试图同时承担三种任务。
规划顺序
- 用一句话写出该图的核心论点。
- 列出支持该论点所需的最少面板。
- 为每个面板分配一个作用。
- 确定锚定面板:
- 结果段落应围绕该面板展开
- 将次要细节移至:
- 另一张图
- 补充材料
- 图注
- 重写图表标题和图注,使其符合实际论点。
- 检查结果小节是否遵循相同的面板逻辑。
主图与补充材料
主图应保留:
- 确立核心论点所需的面板
- 读者必须立即看到的关键比较
- 当新指标、分解方式或评估条件的定义属于论证内容时,用于定义它的面板
移至补充材料的内容:
- 稳健性变体
- 更密集的逐方法比较
- 扩展案例
- 次要消融实验
- 能支持但不能定义核心论点的其他示例
- 接口、兼容性或适用性矩阵(哪些方法接受哪些输入,哪些队列通过检查):可放入补充信息表格,或用一句方法说明。这些内容解释了为何缺少某个条形;主图面板则回答科学问题
图注规则
图注的作用不应仅限于解读坐标轴。
每条图注都应:
- 说明每个面板的作用
- 保留压缩后的正文中省略的关键定量依据
- 确保面板字母标注、指标、数据集和基线彼此一致
- 避免作出强于图中证据的解读
- 不包含辩解式解释(“并非由……选出”“仅为完整起见而列出”“不应进行比较”);而应说明决定可比性的事实(例如,不同的面板、不同的 n)
- 通过说明该数值实际代表什么,正面解释反直觉的数值(例如,容斥重叠值可能略为负数)
- 仅在提供了 Source Data 文件时注明其文件名
图表叙事脉络
在论文中,图 1 将论文的一句话核心主张呈现为数据:聚焦范围,而非架构。
后续图表呈现机制、证据、稳健性和应用。评估每个分图时,既要对照论文的核心主张,也要对照该图自身的主张;故事需要时,就在图表之间调整内容。figure-style 规则 7.5 指向这里(figure-style 属于图表工具栈,随 --figure 安装)。
视觉规范检查
图表逻辑稳定后,进行一轮视觉规范检查:
- 保持图内字体一致,并与稿件正文的字号相近
- 绘图、示意图和示意分图尽可能使用矢量图形
- 使用克制的配色;同一类别始终使用同一色系
- 避免某个分图或模块因颜色明显更深或更亮而意外突出,除非这是有意强调
- 裁掉多余边距和分图周围不必要的留白
- 减少图内文字;更多依靠形状、对齐和分组来解释
- 图表展示流程或过程时,保持箭头方向和符号惯例一致
- 有帮助时,可借鉴成熟的表格或分图布局,但不要默认沿用会议模板的繁杂设计
常见问题
- 一张图试图承载多个互不相关的主张
- 分图顺序遵循绘图时间顺序,而非论证逻辑
- 将方法论衔接分图描述为泛泛的动机说明
- 结果部分声称的内容,图例或分图却无法支持
- 实际承载关键内容的补充材料分图被引用得过于含糊
- 将较弱的辅助指标保留在醒目位置,而不是降级处理
- 图表字体、留白或配色逻辑不一致,使科学比较更难阅读
Nature 风格增强
Matplotlib 图表标准
面向 Nature 或类似高影响力期刊制作图表时,应用以下 rcParams:
import matplotlib.pyplot as plt
MM = 1 / 25.4
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['Arial']
plt.rcParams['svg.fonttype'] = 'none' # editable text in SVG
plt.rcParams['pdf.fonttype'] = 42 # editable TrueType text in PDF
plt.rcParams['font.size'] = 7 # 5-7 pt at final printed size
plt.rcParams['axes.spines.right'] = False
plt.rcParams['axes.spines.top'] = False
plt.rcParams['axes.linewidth'] = 0.8 # 0.75-1 pt at final printed size
plt.rcParams['legend.frameon'] = False
fig = plt.figure(figsize=(89 * MM, 60 * MM)) # single column; 183 mm double
仅在已安装 LaTeX 且标签包含大量数学内容时,才使用 text.usetex = True。
印刷比例与设计比例
上述数值是印刷比例:画布就是印刷出来的分图,因此每个尺寸都是读者实际看到的尺寸。这是默认设置,也更稳妥。
你也会遇到按设计比例制作的图表:画布宽度是印刷宽度的 S 倍,导出时再缩小至栏宽。常见的选择是 S 约为 4,这会使 font.size = 24 在页面上的字号变为 6.1 pt,并使 axes.linewidth = 3 变为 0.76 pt。这些数值可以使用,但必须先除以比例。遵循以下两条规则:
- 不要在同一个脚本中混用两种比例。选定
S,在注释中说明,并将每个绝对尺寸都除以它。 - 设计比例仅用于导出栅格图像。如果图表是线稿,请使用印刷比例并导出矢量图,因为缩小后的柱状图 PNG 仍是栅格图,而它本应保持为矢量图。
Nature 风格调色板
需要固定且适合印刷的配色时,这组暖色系 Nature 风格配色适用于 Nature Communications 和类似期刊。基线或参考序列使用陶土色,其余类别按列表顺序依次选色,并确保每个类别使用同一色系:
#C96144 terracotta (baseline / reference) #99C290 light green
#E99D4E amber #C0BEDC light purple
#5185C0 blue #8EA9D4 light blue
#8281B9 purple #F2CB9F light amber
#55966B green #99AABB grey-blue
#FFB3C1 pink #FFD3E0 light pink #87CEEB sky blue
NATURE_PALETTE = [
"#C96144", "#E99D4E", "#5185C0", "#8281B9", "#55966B",
"#99C290", "#C0BEDC", "#8EA9D4", "#F2CB9F", "#99AABB",
"#FFB3C1", "#FFD3E0", "#87CEEB",
]
def nature_assign(labels, baseline=None):
"""Map labels to palette colors, one distinct color per label.
The baseline/reference series gets terracotta and the rest walk the palette
in order. Raises rather than reusing a color: two series sharing one color
silently breaks the figure's color threading.
"""
has_baseline = baseline is not None and baseline in labels
available = NATURE_PALETTE[1:] if has_baseline else NATURE_PALETTE
others = [label for label in labels if label != baseline]
if len(others) > len(available):
raise ValueError(
f"{len(others)} series but only {len(available)} distinct colors "
"available; group related series into one color family, or move "
"some of them to a separate panel"
)
result, idx = {}, 0
for label in labels:
if has_baseline and label == baseline:
result[label] = NATURE_PALETTE[0]
else:
result[label] = available[idx]
idx += 1
return result
适用场景
- 面向 Nature、NeurIPS、ICLR 或类似出版平台的论文、幻灯片或报告中的图表。
- 涉及分组柱状图、趋势线、热图、雷达图、多分图网格或 PDF/SVG/高 DPI 输出的请求。
- 提及“Nature 风格”“出版用图”“论文图表”或“高质量科学绘图”的任何请求。
输出标准
使用此技能时,请提供:
- 图表的一句话主张
- 拟议的分图列表及其作用
- 主图保留哪些内容、哪些内容移至补充材料
- 图例逻辑
- 仍需处理的视觉规范问题
- 对应的结果小节标题或主题句