第六节 简约统计图

状态:文稿准备中

6.1 PGFPlots 统计图框架

老样子,需要在导言区引入宏包,并且指定使用的宏包版本。
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}

该宏包是基于 TikZ 的,所以最外部需要添加tikzpicture环境,而构成一个 PGFPlots 统计图环境的最基本单位就是一个axis环境;后面紧跟该统计图的整体参数;坐标系内添加数据序列。

  1. \addplot添加二维点集;
  2. \addplot3添加三维点集。

每个数据后面可以使用[参数]接上该数据系列的参数,再接

  • table {数据文件}引入数据,数据文件的每一行为一个坐标,多维度的坐标之间需要使用空格分隔。如果需要封装数据源,需要使用 \pgfplotstableread 命令赋予数据一个变量,注意变量名不能含有数字;
  • coordinates {(\(x_1\),\(y_1\),\(z_1\)) (\(x_2\),\(y_2\),\(z_2\))}直接标明坐标点;
  • {函数表达式}直接绘制二维函数图像。如果是三维函数,需要写出三个维度上的参数化方程,用({\(x(t)\)},{\(y(t)\)},{\(z(t)\)})表示。如果是直接的 \(z\)轴 表达式,可以直接写出关于 \(x\) 和 \(y\) 的函数表达式 {\(z(x,y)\)}

最后,可以使用\legend添加图例系列名称。

\begin{tikzpicture}
    \begin{axis}[]
        \addplot[] table {data.dat};
        \legend{data};
    \end{axis}
\end{tikzpicture}

编译时,可以单独编译出一个 PDF 文件,使用\includegraphics{graph.pdf}引入静态文件。使用 \(\rm Lua\LaTeX\) 可以加速编译进度,并使用动态内存以免除内存上限问题。

6.2 不同类型的统计图

graphExamples.pdf [源代码]

axis后面添加的参数为坐标系全局参数;在每个数据系列上添加的参数为局部参数。推荐全局使用的参数用🌐标记。更多类型的统计图绘制方法可以参看 PGFPlots 宏包手册

  • 折线图
  • 折点图
  • 散点图
  • 柱形图
  • 面积图
  • 曲面图
  • 等高图
  • 直方图
  • 箱式图
  • 折线图 在不加任何参数的情况下,图形呈现的就是单纯的折线图。
  • 折点图 添加参数mark=*可以添加散点标记,当然可以更换为其他的标记,比如x+等(启用plotmarks标记库以使用更多类型的标记)。
  • 散点图 添加参数only marks可以只显示散点标记,不显示折线。添加scatter参数可以让散点跟随其因变量取值(\(y\) 或 \(z\))变为七彩的。
  • 柱形图 添加参数ybar(或者是xbar横向柱形图)。如果需要产生堆积柱形图,请使用ybar stacked(或xbar stacked)参数🌐。
  • 面积图 在系列的分号前添加\closedcycle就可以闭合路径以产生面积图。如果需要产生堆积面积图,请使用stack plots=y参数🌐。
  • 曲面图 三维坐标使用mesh参数产生曲面线框,使用surf参数产生曲面填充层。
  • 等高图 三维坐标使用contour filled参数产生等高填充图,使用contour gnuplot产生等高线图。
    等高填充图在某些 PDF 查看器中会渲染模糊。等高线图需要产生临时文件。
  • 直方图 坐标图使用参数ybar interval绘制直方图,添加xticklabel interval boundaries增加横轴数据标签🌐。
    推荐添加参数x tick label style = {rotate = 90,anchor = east,}调整坐标方向避免重叠。
  • 箱式图 对于文件项目添加参数boxplot产生箱式图🌐。
    需要引入统计库
    \usepgfplotslibrary{statistics}
    注意文件要有两列,以第二列做统计计算。

6.3 从外部软件生成代码

6.3.1 制作简单一些的统计图可以在电脑端打开本页,使用上面的 PGFPlots 代码生成器 生成,右键编译好的图像可以保存 PDF 文件至本地。在编辑过程中善用参数命令的自动填充功能(按 Enter 键触发)。

6.3.2 Matlab 可以使用 Matlab2TikZ 生成 PGFPlots 的代码。

6.3.3 Python 可以安装 tikzplotlib,转换 matplotlib 图像为 PGFPlots 代码。

6.4 使用样式库个性化统计图

PGFPlots 宏包拥有很多样式库,在导言区引用后可以扩展原有 PGFPlots 的功能。

6.4.1 \usetikzlibrary{plotmarks} 标记样式集。

mark=

6.4.2 \usepgfplotslibrary{colorbrewer} 配色方案集,Cynthia Brewer 的 Color Brewer 配色集(2002)符合 Apache License 2.0,以下摘录自配色数据

6.4.3 \usepgfplotslibrary{colormaps} 提供类似于 Matlab 的渐变库,其中 viridis high res 样式取自 matplotlib,遵守 CC0 License

colormap=