跳到正文

Scissor LaTeX 中的 pgfplots

pgfplots 宏包在 Scissor LaTeX 中可用于大多数二维图,由它自己的渲染器绘制:坐标轴、折线图、散点图和柱状图、公式、表格和 CSV 文件、对数坐标轴、误差棒、图例、groupplots、fill between 以及俯视的热图;三维视角、axis equal 和 pgfplotstable 的表格暂不支持。

宏包的作用

pgfplots 在 TikZ 图形中根据数据或公式绘制图表。你写 \begin{tikzpicture}\begin{axis}[...],为每个数据系列添加一个 \addplot,pgfplots 会自动选择刻度、图例和颜色。它的选项涵盖对数坐标轴、柱状图、误差棒、颜色映射等等。

Scissor LaTeX 并不运行 pgfplots。排版器读取同样的代码,自己把图绘制为矢量图形,标签使用文档的字体。结果与 pgfplots 的默认效果非常接近,源代码无需修改即可在 TeX 发行版中编译。

这里可用的功能

功能在 Scissor LaTeX 中更多
带标签、标题、图例、网格、刻度和范围的 axis可用pgfplots 基础
线条、标记、颜色、循环列表、smooth、const plot可用折线图
only marks、散点图可用散点图
ybar、xbar、堆叠柱状图、nodes near coords、symbolic x coords可用柱状图
error bars/.cd, y explicit, +- (x, y)可用误差棒
semilogyaxis, loglogaxis, xmode=log可用对数坐标轴
带 group style 的 groupplot(groupplots 库)可用组图
用 \addplot table 读取内联数据行或项目中的 .csv/.dat 文件可用来自 CSV 的数据
带 view={0}{90} 的 \addplot3:surf、matrix plot、contour filled、colorbar可用等高线图和热图
fill between(fillbetween 库)、name path可用
\pgfplotsset{...}、样式、compat=可用无论如何设置,行为都与 compat=1.18 相同。
使用其他 view 的 \addplot3(真正的三维)不支持绘制一个空坐标轴,并显示提示。
axis equal不支持被忽略并显示提示;坐标轴保持各自的比例。
\pgfplotstabletypeset(pgfplotstable)不支持会被跳过并显示提示,文件名会被输出。
未知选项忽略被忽略,并显示注明该选项的提示;其余部分照常绘制。

示例

带数值标签的柱状图:

带 nodes near coords 的柱状图

LaTeX导言区: \usepackage{pgfplots}在编辑器中打开 (在新标签页中打开)
\begin{tikzpicture}
  \begin{axis}[ybar, bar width=12pt, ymin=0, ymax=52,
      symbolic x coords={Mon,Tue,Wed,Thu}, xtick=data,
      nodes near coords, enlarge x limits=0.2,
      ylabel={Visitors}, width=7cm, height=5cm]
    \addplot coordinates {(Mon,31) (Tue,44) (Wed,38) (Thu,27)};
  \end{axis}
\end{tikzpicture}

从写在文档中的表格读取两个数据系列,并加上图例:

内联表格中的各列

LaTeX导言区: \usepackage{pgfplots}在编辑器中打开 (在新标签页中打开)
\begin{tikzpicture}
  \begin{axis}[xlabel={Week}, ylabel={Hours of practice},
      legend pos=north west, width=7cm, height=5cm]
    \addplot table [x=week, y=erika] {
      week erika john
      1    4     2
      2    6     3
      3    5     5
      4    8     6
    };
    \addlegendentry{Erika}
    \addplot table [x=week, y=john] {
      week erika john
      1    4     2
      2    6     3
      3    5     5
      4    8     6
    };
    \addlegendentry{John}
  \end{axis}
\end{tikzpicture}

从斜角观察的曲面暂时还无法绘制。坐标轴显示为空,“问题”标签页会说明原因:

三维视角不会被绘制

LaTeX导言区: \usepackage{pgfplots}在编辑器中打开 (在新标签页中打开)
\begin{tikzpicture}
  \begin{axis}[view={60}{30}, width=6cm]
    \addplot3[surf, domain=-2:2] {x^2 - y^2};
  \end{axis}
\end{tikzpicture}

“问题”标签页: 3D plots are drawn only when seen from above (view={0}{90}) for now

兼容性

  • 从 TeX 发行版迁移到这里: 大多数二维图看起来与那里的效果一致,误差在一两个点以内。真正的三维图、axis equal 以及支持范围之外的选项会在“问题”标签页中注明。
  • 从这里迁移到 TeX 发行版: 图无需修改即可在那里配合 pgfplots 编译。contour lua 和 contour gnuplot 在那里需要 LuaLaTeX 或 gnuplot;contour filled 两者都不需要。

完整手册见 CTAN:ctan.org/pkg/pgfplots。不带坐标轴的绘图请参阅 TikZ。

常见问题

在这里使用 pgfplots 需要先安装它吗?

不需要。照常写 \usepackage{pgfplots};Scissor LaTeX 会识别这些代码,并在浏览器中绘制图表。

为什么我的三维图是空的?

目前只能绘制俯视(view={0}{90})的图。其他视角会得到一个空坐标轴,并在“问题”标签页中显示提示。

能根据 CSV 文件中的数据画图吗?

能。把文件添加到项目中,然后写 \addplot table[x=a, y=b, col sep=comma] {file.csv};。

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