我想要执行以下操作:
在 pgfplots 中执行一些绘制或绘图命令,然后修复边界框。即,所有后续绘图都不应影响边界框。我该怎么做?我尝试过叠加,但没有效果:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[no markers]
\addplot gnuplot {sin(x)};
%Fix bounding box from this point; do not add any of the following to the bounding box.
\addplot[overlay] gnuplot {exp(x)};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
使用update limits=false
。修改边界框也是可能的,但在这种情况下不是你想要的——你想改变轴的整个外观(除非我弄错了)。解决方案是
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
no markers,
trig format plots=rad,
restrict y to domain=-1:10,
]
\addplot {sin(x)};
\addplot+[update limits=false] {exp(x)};
\end{axis}
\end{tikzpicture}
\end{document}
restrict y to domain
请注意,由于 pgfplots 中的浮点算法存在内部弱点,所以我必须添加此内容。
或者,您可以使用环境来禁用对轴限制的更新。这可能更有效,以便将修改应用于“所有后续图”:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
no markers,
trig format plots=rad,
restrict y to domain=-1:10,
]
\addplot {sin(x)};
\begin{pgfplotsinterruptdatabb}
\addplot {exp(x)};
\end{pgfplotsinterruptdatabb}
\end{axis}
\end{tikzpicture}
\end{document}
请注意,这overlay
解决了不同的用例:它仅从边界框中排除图形元素,但它确实不是overlay
影响轴限值的选择方式。因此,update limits=false
由于轴限值仍将像以前一样选择,并且由于轴线定义了边界框,因此该overlay
功能没有效果。
然而,overlay
有隐藏轴线时的效果:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
This is the figure and its BB:
\fbox{%
\begin{tikzpicture}
\begin{axis}[
no markers,
trig format plots=rad,
restrict y to domain=-1:10,
hide axis,
]
\addplot {sin(x)};
\addplot+[overlay] {exp(x)};
\end{axis}
\end{tikzpicture}}
\end{document}
请注意,在轴限值计算过程中,这两个图都得到了尊重(从 y 轴缩小的事实可以看出)。但第二个图并不影响边界框,从命令中可以看出\fbox
;它甚至跨越了文本。
因此:update limits=false
控制单个图如何影响轴限值(这对缩放和描述有影响)。overlay
如果涉及图形元素及其边界框,则该键很有用。