跳到正文

pgfplots 基础:LaTeX 绘图入门与示例

加载 pgfplots,打开一个 tikzpicture 并在其中放入 axis,然后用 \addplot 添加每个数据系列,可以是坐标列表,也可以是公式。

最简单的图表

每个 pgfplots 图表都有相同的三层结构:一个 tikzpicture,其中的一个 axis,以及每个数据系列一个 \addplot。在导言区用 \usepackage{pgfplots} 加载宏包。

用线连接的四个点

LaTeX导言区: \usepackage{pgfplots}在编辑器中打开 (在新标签页中打开)
\begin{tikzpicture}
  \begin{axis}
    \addplot coordinates {(0,1) (1,3) (2,2) (3,4)};
  \end{axis}
\end{tikzpicture}

坐标轴会根据数据自动选择范围和刻度。不带选项的 \addplot 从默认的循环列表中获取颜色和标记:第一个系列是带圆形标记的蓝色,第二个是带方形标记的红色,依此类推。

绘制公式

除了坐标,也可以在花括号中给 \addplot 一个公式。domain 设置 x 的范围,samples 设置采样点数。不设置时,pgfplots 使用 -5 到 5 的范围和 25 个采样点。

指定 domain 和 samples 的函数

LaTeX导言区: \usepackage{pgfplots}在编辑器中打开 (在新标签页中打开)
\begin{tikzpicture}
  \begin{axis}
    \addplot[blue, thick, domain=-2:2, samples=60] {x^3 - 2*x};
  \end{axis}
\end{tikzpicture}

\addplot 之后方括号中的选项用于设置该系列的样式。不带 + 给出选项时,系列以黑色(或你指定的颜色)绘制,且没有标记;\addplot+[...] 保留循环列表的样式,并在其上添加你的选项。

标签、标题、图例和网格

这些选项写在 axis 上,因此作用于整个图表。

坐标轴标签、标题、图例和网格

LaTeX导言区: \usepackage{pgfplots}在编辑器中打开 (在新标签页中打开)
\begin{tikzpicture}
  \begin{axis}[
      title={Cooling of a cup of tea},
      xlabel={Time (min)},
      ylabel={Temperature ($^\circ$C)},
      grid=major,
      legend pos=north east,
    ]
    \addplot coordinates {(0,80) (5,64) (10,53) (15,44) (20,38)};
    \addlegendentry{Measured}
    \addplot[red, domain=0:20, samples=40] {22 + 58*exp(-0.08*x)};
    \addlegendentry{Model}
  \end{axis}
\end{tikzpicture}
由 Scissor LaTeX 排版: 坐标轴标签、标题、图例和网格

标签是文本,所以数学内容要像在段落中一样写在 $ ... $ 之间。在每个 \addplot 之后用 \addlegendentry 为该系列命名;也可以在最后用 \legend{Measured, Model} 列出所有名称。

常用坐标轴选项

选项作用在 Scissor LaTeX 中
xlabel、ylabel、title坐标轴旁和图表上方的文字支持
xmin、xmax、ymin、ymax固定可见范围支持
width、height整个图形的大小,例如 width=\linewidth支持
grid=major、grid=both在主刻度(和次刻度)处画网格线支持
xtick={0,1,2}、xticklabels={a,b,c}选择刻度及其标签支持
legend pos=north westnorth west、north east、south west、south east、outer north east支持
axis lines=left用一对带箭头的 L 形坐标轴代替方框支持(还有 middle、center、none)
enlargelimits=false数据周围不留额外空间支持
axis equal两个坐标轴使用相同的比例暂不支持:会被忽略,并在“问题”标签页中给出提示

pgfplots 手册中的大多数其他选项也能使用;折线图页面列出了样式和标记。渲染器不认识的选项会被忽略,并在“问题”标签页中列出。

大小和位置

默认情况下,图表约为 240 × 207 点,这是 pgfplots 的默认大小。在坐标轴上设置 width 和 height 可以更改它。要给图表加上图注和编号,就像插入图片一样,把 tikzpicture 放进 figure 中。

带图注的 figure 中的图表

LaTeX导言区: \usepackage{pgfplots}在编辑器中打开 (在新标签页中打开)
\begin{figure}[h]
  \centering
  \begin{tikzpicture}
    \begin{axis}[width=7cm, height=4.5cm, xlabel=$x$, ylabel=$x^2$]
      \addplot[domain=0:2, samples=30] {x^2};
    \end{axis}
  \end{tikzpicture}
  \caption{A parabola on $[0, 2]$.}
  \label{fig:parabola}
\end{figure}

Figure~\ref{fig:parabola} shows the parabola.
由 Scissor LaTeX 排版: 带图注的 figure 中的图表

在单个 tikzpicture 外面使用 \resizebox{0.5\linewidth}{!}{...} 也可以:图形会缩放到该宽度。

与 TeX 发行版的不同之处

本页的所有内容在装有 pgfplots 的 TeX 发行版中也能编译。完整手册见 CTAN:ctan.org/pkg/pgfplots。

常见问题

需要安装 pgfplots 吗?

不需要。照常写 \usepackage{pgfplots} 即可。Scissor LaTeX 会识别这个宏包,并在浏览器中自己绘制图表。

为什么我的函数图像呈锯齿状?

pgfplots 默认连接 25 个点。在 \addplot 或坐标轴上加 samples=100(或更多)可以得到更平滑的曲线,也可以加 smooth,让曲线平滑地穿过这些点。

可以不用 tikzpicture 使用 pgfplots 吗?

不可以,在 LaTeX 中 axis 环境总是位于 tikzpicture 之内。Scissor LaTeX 遵循同样的规则,所以你的代码在其他地方也能编译。

本页的每个示例都在构建网站时由 Scissor LaTeX 排版。 最后更新:2026-11-07