我遇到的问题与这个问题:我有一个用 PGFplots 制作的相当复杂的图,通过使用光栅化图像 (PNG) 而不是 PDF,我可以显著减少文件大小。该问题的答案中建议的主要解决方案是将外部化的 PDF 转换为高分辨率 PNG 文件,并将其重新包含在文档中,大概使用\includegraphics
或等效方法。好的,很好,我可以这样做。
但是假设我想将轴和描述保留为矢量“格式”,并且只有内容将图解转换为 PNG 格式。目前已经存在许多可以自动完成此操作的技术:
hide axis
PGFplots 可以使用以下样式创建不带线条和标签的轴的内容(但仍包括标题和图例)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 内部结构的人会知道一种方法?或者也许还有其他方法可以达到相同的效果,也许可以通过根据我们所处流程的步骤选择要应用于图片的样式。