← Back to blog

The article body for this language is not available yet; showing the other language.

Blog & updates

学术绘图实战:5 类论文高频图表的 LaTeX 绘制方法

2026-04-20

系统梳理学术论文中 5 类高频图表(算法流程图、实验对比图、网络拓扑图、系统架构图、数据流图)的 LaTeX 绘制方法,配合 DrawFig 在线工具实现从描述到代码的一站式生成。

学术绘图实战:5 类论文高频图表的 LaTeX 绘制方法

引言

写论文时,文字可以反复打磨,但一张粗糙的插图往往会直接拉低审稿人对整篇论文的印象。IEEE、ACM、Springer 等出版商对插图质量有明确要求——矢量格式、字号一致、色彩规范。LaTeX + TikZ 天然满足这些要求,但很多研究者因为语法复杂而望而却步。 本文梳理了学术论文中出现频率最高的 5 类图表,分别给出 TikZ 绘制的核心思路和代码骨架,并展示如何用 DrawFig 将"描述→图形→代码"的流程压缩到几分钟。

一、算法流程图

算法流程图是算法类论文的标配。TikZ 提供了 shapes.geometric 库,可以直接使用菱形(判断)、圆角矩形(开始/结束)、平行四边形(输入/输出)等标准流程图符号。
\usetikzlibrary{shapes.geometric, arrows.meta, positioning}

\begin{tikzpicture}[
  startstop/.style={rectangle, rounded corners, minimum width=2.5cm, minimum height=0.8cm, text centered, draw},
  process/.style={rectangle, minimum width=2.5cm, minimum height=0.8cm, text centered, draw},
  decision/.style={diamond, minimum width=2cm, minimum height=0.8cm, text centered, draw, aspect=2},
  arrow/.style={thick, ->, >=Stealth}
]
  \node (start) [startstop] {开始};
  \node (init) [process, below=of start] {初始化参数};
  \node (check) [decision, below=of init] {满足条件?};
  \node (update) [process, below=of check] {更新状态};
  \node (stop) [startstop, below=of update] {结束};

  \draw[arrow] (start) -- (init);
  \draw[arrow] (init) -- (check);
  \draw[arrow] (check) -- node[right] {是} (update);
  \draw[arrow] (check.west) -- ++(-1.5,0) |- node[above, near start] {否} (init.west);
  \draw[arrow] (update) -- (stop);
\end{tikzpicture}
关键点在于用 style 预定义每种形状的样式,后续节点声明时只需引用样式名,代码更简洁、更易维护。

二、实验对比图(柱状/折线)

实验结果对比图通常用 pgfplots 宏包绘制,它基于 TikZ 但专门面向数据可视化,语法更直观。
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\begin{tikzpicture}
  \begin{axis}[
    ybar,
    bar width=12pt,
    xlabel={数据集},
    ylabel={准确率 (\%)},
    symbolic x coords={Cora, Citeseer, Pubmed, ogbn-arxiv},
    xtick=data,
    legend style={at={(0.5,-0.2)}, anchor=north, legend columns=-1},
    ymin=60, ymax=100,
    nodes near coords,
    nodes near coords align={vertical},
  ]
    \addplot coordinates {(Cora,92.3) (Citeseer,88.7) (Pubmed,90.1) (ogbn-arxiv,85.4)};
    \addplot coordinates {(Cora,85.1) (Citeseer,82.3) (Pubmed,84.6) (ogbn-arxiv,79.2)};
    \legend{本文方法, 基线方法}
  \end{axis}
\end{tikzpicture}
ybar 表示纵向柱状图,symbolic x coords 用字符串作为横轴标签,nodes near coords 在每根柱子上方显示数值——审稿人最爱看这种标注。

三、网络拓扑图

图论、网络科学方向的论文几乎每篇都要画网络拓扑图。TikZ 的 graphdrawing 库可以自动布局,但需要 LuaLaTeX 编译。如果不想切换编译器,手动指定坐标是最稳妥的方案。
\begin{tikzpicture}[
  vertex/.style={circle, draw, minimum size=0.7cm, inner sep=0pt, font=\small},
  edge/.style={thick},
  node distance=2cm
]
  \node[vertex, fill=blue!20] (v1) at (0,2)   {$v_1$};
  \node[vertex, fill=blue!20] (v2) at (2,2)   {$v_2$};
  \node[vertex, fill=red!20]  (v3) at (1,0.5) {$v_3$};
  \node[vertex]               (v4) at (-1,0)  {$v_4$};
  \node[vertex]               (v5) at (3,0)   {$v_5$};

  \draw[edge] (v1) -- (v2);
  \draw[edge] (v2) -- (v3);
  \draw[edge] (v1) -- (v4);
  \draw[edge] (v3) -- (v5);
  \draw[edge, dashed] (v4) -- (v5);
  \draw[edge, bend left=25] (v1) to (v3);
\end{tikzpicture}
这里用 fill=blue!20fill=red!20 给不同类别的节点着色,dashed 表示虚边,bend left=25 画弧线避免与直边重叠——这些都是论文配图中常用的视觉区分手段。

四、系统架构图

系统类论文(数据库、分布式系统、中间件)需要展示模块间的层次和调用关系。TikZ 的 fitbackgrounds 库可以轻松画出带分组框的架构图。
\usetikzlibrary{fit, backgrounds, positioning}

\begin{tikzpicture}[
  module/.style={rectangle, draw, rounded corners, minimum width=2.2cm, minimum height=0.8cm, text centered, fill=white},
  arrow/.style={->, >=Stealth, thick}
]
  \node[module, fill=green!15] (ui)     {前端界面};
  \node[module, fill=yellow!15, below=of ui] (api)    {API 网关};
  \node[module, fill=blue!15, below left=1cm and 0.5cm of api] (auth)   {认证服务};
  \node[module, fill=blue!15, below right=1cm and 0.5cm of api] (biz)   {业务逻辑};
  \node[module, fill=orange!15, below=1.5cm of api] (db)     {数据库};

  \draw[arrow] (ui) -- (api);
  \draw[arrow] (api) -- (auth);
  \draw[arrow] (api) -- (biz);
  \draw[arrow] (auth) -- (db);
  \draw[arrow] (biz) -- (db);

  \begin{scope}[on background layer]
    \node[fit=(auth)(biz), draw, dashed, rounded corners, fill=gray!5, inner sep=10pt, label=above:微服务层] {};
  \end{scope}
\end{tikzpicture}
fit 库自动计算包围盒,backgrounds 库让分组框绘制在底层不影响前景内容。这种分层表达在系统论文中几乎是标配。

五、数据流图 / Pipeline 图

机器学习和数据挖掘论文中,数据处理流水线是最常见的插图类型。用 TikZ 的 chains 库可以快速串联多个处理步骤。
\usetikzlibrary{chains, arrows.meta}

\begin{tikzpicture}[
  box/.style={rectangle, draw, rounded corners, minimum width=1.8cm, minimum height=0.7cm, text centered, fill=#1},
  box/.default={white},
  arrow/.style={->, >=Stealth, thick}
]
  \node[box=green!15]  (raw)   {原始数据};
  \node[box=yellow!15, right=1cm of raw]  (clean) {数据清洗};
  \node[box=orange!15, right=1cm of clean](feat)  {特征工程};
  \node[box=blue!15,   right=1cm of feat] (train) {模型训练};
  \node[box=red!15,    right=1cm of train](eval)  {评估部署};

  \draw[arrow] (raw) -- (clean);
  \draw[arrow] (clean) -- (feat);
  \draw[arrow] (feat) -- (train);
  \draw[arrow] (train) -- (eval);
\end{tikzpicture}
每一步用不同颜色区分阶段,箭头方向即数据流向,信息密度高但阅读负担低。

用 DrawFig 一站式生成以上图表

上面每类图表都有完整的 TikZ 代码,但实际写论文时,从构思到调通代码往往需要反复尝试坐标、样式和布局。DrawFig 提供了一条更高效的路径: 操作步骤:
  1. 打开 drawfig.com/editor.html,在 AI 对话框中用自然语言描述你想要的图,例如:"画一个包含 5 个模块的系统架构图,前端界面调用 API 网关,网关分别连接认证服务和业务逻辑,两个服务都连接底层数据库"。
  2. AI 自动生成图形并渲染到画布,你可以拖拽节点微调位置、双击修改标签、右键调整颜色。
  3. 点击「导出 TikZ」按钮,DrawFig 将当前画布内容转换为完整可编译的 LaTeX 代码。
  4. 将代码粘贴到论文的 \begin{figure} 环境中,编译即得矢量级配图。
整个过程从描述到拿到 TikZ 代码,通常不超过 3 分钟。相比手写代码半小时起步的效率,对赶 deadline 的研究者来说差别是巨大的。

结语

学术论文中的高质量插图并非奢侈品,而是审稿流程中的基本要求。LaTeX + TikZ 的组合在格式规范性上无可挑剔,但手写代码的效率确实是瓶颈。掌握这 5 类高频图表的绘制模式后,配合 DrawFig 的 AI 生成 + 可视化编辑 + TikZ 导出流程,可以大幅缩短"想法→插图→论文"的闭环时间。 立即体验 DrawFig 学术绘图 → drawfig.com/editor.html 支持中英文 AI 对话生成、Draw.io 格式编辑、一键导出 TikZ,全程免费,无需注册。
相关阅读:用 TikZ 画图论图:从零开始的完整教程 | AI 对话生成图论图完整指南