pgfplots 基础:LaTeX 绘图入门与示例
加载 pgfplots,打开一个 tikzpicture 并在其中放入 axis,然后用 \addplot 添加每个数据系列,可以是坐标列表,也可以是公式。
最简单的图表
每个 pgfplots 图表都有相同的三层结构:一个 tikzpicture,其中的一个 axis,以及每个数据系列一个 \addplot。在导言区用 \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 的函数
\begin{tikzpicture}
\begin{axis}
\addplot[blue, thick, domain=-2:2, samples=60] {x^3 - 2*x};
\end{axis}
\end{tikzpicture}\addplot 之后方括号中的选项用于设置该系列的样式。不带 + 给出选项时,系列以黑色(或你指定的颜色)绘制,且没有标记;\addplot+[...] 保留循环列表的样式,并在其上添加你的选项。
标签、标题、图例和网格
这些选项写在 axis 上,因此作用于整个图表。
坐标轴标签、标题、图例和网格
\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}标签是文本,所以数学内容要像在段落中一样写在 $ ... $ 之间。在每个 \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 west | north 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 中的图表
\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.在单个 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