使用 tikzexternalize 时轴箭头过度移动会出现奇怪的行为

使用 tikzexternalize 时轴箭头过度移动会出现奇怪的行为

我想使用以下代码创建一个带有水平网格线和轴箭头的图,该图超出该网格线(如这里)。

但是由于线条的原因,\tikzexternalize[shell escape=-enable-write18]结果是没有箭头的轴。删除这条线,它就可以正常工作。我需要这个外部化函数来缓冲我的图形以加快处理速度。

有什么想法可以保留这个功能但同时又有这些超出范围的轴箭头吗?

\documentclass[10pt]{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,angles,positioning,intersections,quotes,decorations.markings}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\usetikzlibrary{external}
\tikzexternalize[shell escape=-enable-write18]

\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=both,
          xmax=18,ymax=17,
          axis x line=bottom,
                    axis y line=left,
          axis line style={shorten >=-0.5cm,-latex}
                    ]
\end{axis}
\end{tikzpicture}

\end{document}

答案1

这是 TikZ 的一个弱点:它从图片的边界框中排除了箭头尖端的边界框。

一种解决方法是人为地增加图片的边界框,或许可以通过手动选择的图片位置来增加它:

\documentclass[10pt]{amsart}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\usetikzlibrary{external}
\tikzexternalize

\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=both,
          xmax=18,ymax=17,
          axis x line=bottom,
                    axis y line=left,
          axis line style={shorten >=-0.5cm,-latex}
                    ]
\end{axis}

\draw (current axis.outer north east) ++ (9pt,9pt);

\end{tikzpicture}

\end{document}

这将获取锚点current axis.outer north east并将9ptx 和 y 添加到其中。这似乎足够了(我通过反复试验确定了这一点)。

外部图形现在如下所示:

在此处输入图片描述

相关内容