我想使用以下代码创建一个带有水平网格线和轴箭头的图,该图超出该网格线(如这里)。
但是由于线条的原因,\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
并将9pt
x 和 y 添加到其中。这似乎足够了(我通过反复试验确定了这一点)。
外部图形现在如下所示: