科研绘图

论文级图表示例 · 可直接复制的 matplotlib 模板 · 配色与工具素材

实图绘制方法论

上面的图例与案例解剖回答「好图长什么样」,这一节回答「怎么亲手画出来」。覆盖从白纸到投稿成稿的全过程,所有纪律与数据均有出处,来源附在节末。

想看真实论文原图(顶会截图)按构图类型分组的案例库,见 /pipeline/(15 张真图案例库)。

五步工作流

  1. 定主张。动笔前用一句话写下「这张图要让读者记住什么」。这句话是所有取舍的裁判,删元素、选配色、定布局时都要回来对表。(Rougier 2014, Rule 2)
  2. 纸笔草图三版。只画方框和箭头,每版五分钟,比的是布局而非细节;纸笔的修改成本最低,最适合快速试错。(Wong 2012「Pencil and paper」)
  3. 选工具、开网格。按图型选工具(见下表),打开 8px 对齐网格;模块间距统一取网格倍数(8/16/24px),视线才能扫出层级。
  4. 先形后字。精绘顺序:布局框架 → 模块形状 → 连线箭头 → 最后才填文字。文字永远最后放,避免为迁就标签而破坏布局。
  5. 缩放盲测。导出 PDF 缩到最终栏宽(单栏 3.5 in / 双栏 7.16 in)后打印或投屏检查字号;再请同事 5 秒盲测,说不出图的主张就回炉。

实例走查:画一张三阶段训练 Pipeline

以 P1(InstructGPT 风格)为例,五步走一遍,照抄即可迁移到自己的方法图。

  1. 主张:「标注反馈把基座模型逐步变成听话的助手」,阶段递进是叙事主轴,奖励模型居中承接。
  2. 草图:第一版横向单行(太宽),第二版三行堆叠(流向来回拐),第三版定稿:三幕从左到右,每幕上下两层。
  3. 工具:draw.io 开 8px 网格;模块统一高度、圆角 4px、水平间距 16px,一套参数贯穿全图。
  4. 先形后字:先摆全部模块与连线,箭头分实线(数据流)与虚线(训练更新),最后填模块名与损失标签。
  5. 盲测:缩到 3.5 in 栏宽,请同事 5 秒复述;能说出「三步训练、中间学奖励」即通过,否则回去删元素。

工具选型

工具最适合优点代价与导出
draw.iopipeline 框图免费、图形库全、XML 可入 git 管理精细排版能力一般;导出 SVG / PDF
PowerPoint快速出稿、组会图复用上手零成本,大量顶会图出自 PPT对齐与复用弱;导 PDF 注意字体嵌入
Figma双流对称结构、多人协作组件复用、自动布局需要账号;导出 SVG / PDF
TikZ需要嵌公式的图LaTeX 原生、精确、纯文本可 diff学习曲线陡、迭代慢
matplotlib数据驱动图、简单框图代码可复现、与实验图同源复杂框图布局繁琐;导出 PDF / SVG
InkscapeSVG 后处理、多图拼接免费开源、路径编辑强不适合从零起稿;导出 PDF / SVG
Excalidraw讨论期草图手绘风上手最快不适合成稿;导出 SVG / PNG

十条绘图纪律

  1. 一图一主张。图相当于论文里的一个段落,只有一个中心句;一张图想讲两件事,先拆再画。
  2. 箭头是动词。实线表数据流,虚线表梯度回传或参数更新,线宽表数据量级;全图共用一套箭头词汇表,语义变了样式就要变。(Wong 2011「Arrows」)
  3. 颜色守恒。一个角色全篇只占一个颜色,图例、正文、后续图表全部沿用;彩色留给主角,配角一律灰阶。(Wong 2010「Color coding」)
  4. 色盲安全。北欧裔人群约 8% 的男性有红绿色觉缺陷,论文落到三位北欧裔男性审稿人手里,至少一位色盲的概率约 22%;默认 Okabe-Ito,红绿同图必自查。(Wong 2011「Color blindness」)
  5. 彩虹色阶禁用。jet / rainbow 亮度不均匀,会把平滑梯度画出假边界,引入的视觉误差可超过数据总变差的 7%;梯度数据换感知均匀色阶。(Crameri 2020)
  6. 重复即折叠。三层相同模块画一层加 N× 角标,省略号与黑盒包装都是合法减法;折叠前先展开一例给读者校验。
  7. 留白是信息。非重点组件画成黑盒;每轮迭代删一个元素,删掉后主张不受损就永久删除,不承载信息的墨水都是成本。(Tufte 的 data-ink 原则;Wong「Negative space」)
  8. 字号守底线。先定最终物理尺寸再动笔(单栏 3.5 in、双栏 7.16 in),成稿缩放后图内文字与 caption 同级(约 7~9 pt),插入论文后不再缩放。
  9. 对齐成模数。间距、圆角、线宽取同一基数的倍数(如 4/8/16 px);对齐产生免费的秩序感,错位产生昂贵的混乱。
  10. 矢量优先。框图与曲线一律 PDF / SVG,位图只留给热力图与照片;导出后检查字体嵌入,matplotlib 记得 pdf.fonttype=42。

投稿前自查清单

经验来源

常用方法

全局样式模板(rcParams)

放在每个绘图脚本开头,所有图自动获得统一的论文级外观。

import matplotlib.pyplot as plt

plt.rcParams.update({
    "font.family": "serif",
    "font.serif": ["Times New Roman", "Songti SC"],
    "mathtext.fontset": "stix",
    "font.size": 9,
    "axes.linewidth": 0.8,
    "axes.labelsize": 9,
    "xtick.labelsize": 8,
    "ytick.labelsize": 8,
    "xtick.direction": "in",
    "ytick.direction": "in",
    "legend.fontsize": 8,
    "legend.frameon": False,
    "figure.dpi": 150,
    "savefig.dpi": 300,
    "savefig.bbox": "tight",
    "pdf.fonttype": 42,   # 嵌入 TrueType,避免 Type 3 被期刊拒收
    "ps.fonttype": 42,
})

尺寸与导出规范

项目规范说明
单栏图宽figsize=(3.5, h)IEEE / ACM 单栏 3.5 in(约 8.9 cm)
双栏图宽figsize=(7.16, h)通栏大图 7.16 in(约 18.2 cm)
图高上限≤ 9.2 in超过会被排版系统压缩
线图格式.pdf / .svg矢量优先,缩放不失真
位图分辨率dpi=300热图、照片类 300 起步,投稿常要求 600
字体嵌入pdf.fonttype=42Type 3 字体会被多数出版方拒收
图内字号7 ~ 9 pt与正文 caption 字号一致,插入后不再缩放

实用技巧

  1. 先定物理尺寸再画图。用 figsize 锁定最终插入论文的尺寸,字号就不会在排版时缩放失真。
  2. 弱化装饰。隐藏上、右脊线(spines),网格只留 y 方向细线并压到数据层下方(set_axisbelow(True))。
  3. 配色先过色盲关。默认用 Okabe-Ito 方案,避免红绿直接对比;梯度数据用单色深浅渐变。
  4. 误差展示用阴影带。fill_between 画置信区间比 errorbar 的密针脚干净得多。
  5. 图内只留图例。标题和结论写进 LaTeX 的 \caption{},图内标题一律省略。
  6. 组内顺序全篇统一。方法颜色、柱序、线型在所有图里保持同一映射,读者只需记一次图例。

素材与资源

Okabe-Ito 色盲友好配色

点击色块复制 HEX。前四色即可覆盖绝大多数对比场景。

来源:Okabe & Ito (2008),Color Universal Design,8 色均通过常见色盲模拟校验。

工具清单

工具用途
matplotlibPython 绘图底座,论文图的主力
SciencePlotspip install SciencePlots,一行 plt.style.use('science') 获得 Nature / IEEE 风格
seaborn统计图封装,分布图与热力图出图快
plotly交互图,适合网页展示与答辩 demo
draw.io架构图与流程图,导出 SVG 后可进 Illustrator 微调
ColorBrewer地图与分组数据的经典配色生成器,附色盲安全标注