自动将 PGFplot 的内容外部化为 PNG

自动将 PGFplot 的内容外部化为 PNG

我遇到的问题与这个问题:我有一个用 PGFplots 制作的相当复杂的图,通过使用光栅化图像 (PNG) 而不是 PDF,我可以显著减少文件大小。该问题的答案中建议的主要解决方案是将外部化的 PDF 转换为高分辨率 PNG 文件,并将其重新包含在文档中,大概使用\includegraphics或等效方法。好的,很好,我可以这样做。

但是假设我想将轴和描述保留为矢量“格式”,并且只有内容将图解转换为 PNG 格式。目前已经存在许多可以自动完成此操作的技术:

  • hide axisPGFplots 可以使用以下样式创建不带线条和标签的轴的内容(但仍包括标题和图例)
  • external它可以使用库导出单图图像
  • 它可以自动栅格化外部图像convert,例如,按照这个问题
  • 它可以使用外部光栅图像作为绘图的内容,使用\addplot graphics机制

那么我们能否把所有这些步骤拼接起来制作一个 PGFplots 样式自动地将绘图内容写为 PNG 文件,然后将其显示在轴内?(我的用例仅涉及 2D 图,但如果有人愿意接受 3D 图的挑战,我不会抱怨!)

至少对我来说,主要的障碍是外部化一个未直接显示在文档中的图,并且它实际上并不作为单独的图存在tikzpicture。以一个示例图为例:

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
  \begin{tikzpicture}
    \begin{axis}
      \addplot {x + 1};
    \end{axis}
  \end{tikzpicture}
\end{document}

我的想法是(以某种方式)将tikzpicture环境转变为

  \begin{tikzpicture}[undisplayed,tikz/external/figure name=randomname]
    \begin{axis}[hide axis]
      \addplot {x + 1};
    \end{axis}
  \end{tikzpicture}
  \begin{tikzpicture}
    \begin{axis}
      \addplot graphics {randomname};
    \end{axis}
  \end{tikzpicture}

并且只显示第二张图片(因此是假设的undisplayed样式,尽管我不知道这样的事情是否真的可能)。当然,我不确定如何做到这一点。如果可能的话,也许更熟悉 PGFplots/TikZ 内部结构的人会知道一种方法?或者也许还有其他方法可以达到相同的效果,也许可以通过根据我们所处流程的步骤选择要应用于图片的样式。

相关内容