我想展示一个函数,它使用不同的值作为它的域,比如“缩小”一系列帧。使用以下代码,绘图前的文本和绘图的轴/帧都会在帧之间跳转:
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\begin{document}
\begin{frame}
text
\begin{center}
\begin{tikzpicture}
\begin{axis}[
scaled ticks=false,
ticklabel style={/pgf/number format/fixed,/pgf/number format/1000 sep={\,}},
width=11cm,
height=6cm
]
\only<1>{ \addplot [domain=0:5] {x^3}; }
\only<2>{ \addplot [domain=0:15] {x^3}; }
\only<3>{ \addplot [domain=0:100] {x^3}; }
\only<4>{ \addplot [domain=0:1000] {x^3}; }
\end{axis}
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
请注意,不同的幻灯片实际上应该改变其 x 轴的最大值,即第一张幻灯片应该显示域0:5
缩放到图的宽度的函数。我需要这个,因为需要“缩小”效果来显示函数的一些细节,这些细节在较大的域中开始不可见。
避免投影机跳帧建议使用overlayarea
,这样我可以避免跳跃文本,但不会对情节内容进行任何改变。
有什么方法可以强制所有addplot
命令产生相同的大小,理想情况下图的 (0,0) 点位于所有帧的同一位置?
答案1
这就是overlay-beamer-styles
编辑的目的。此外,我喜欢这个[t]
选项,虽然在这里没有帮助,但总的来说,它有助于避免在使用时出现跳跃\only
。此外,我给 y 刻度设置了固定宽度。(你的图有点太宽了。)
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usetikzlibrary{overlay-beamer-styles}
\begin{document}
\begin{frame}[t]% <- I prefer [t] to avoid jumps
text
\begin{center}
\begin{tikzpicture}
\pgfplotsset{scaled ticks=false,ytick style={text
width=2cm,align=right},
ticklabel style={/pgf/number format/fixed,/pgf/number format/1000 sep={\,}},
width=11cm,
height=6cm}
\begin{axis}[visible on=<1>]
\addplot [domain=0:5] {x^3};
\end{axis}
\begin{axis}[visible on=<2>]
\addplot [domain=0:15] {x^3};
\end{axis}
\begin{axis}[visible on=<3>]
\addplot [domain=0:100] {x^3};
\end{axis}
\begin{axis}[visible on=<4>]
\addplot [domain=0:1000] {x^3};
\end{axis}
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
答案2
这允许通过固定轴大小和边界框来缩小。
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\begin{document}
\begin{frame}
text
\begin{center}
\begin{tikzpicture}
\path (-2.5cm,-1.5cm) (8.5cm,4.5cm);% bounding box
\begin{axis}[
scaled ticks=false,
ticklabel style={/pgf/number format/fixed,/pgf/number format/1000 sep={\,}},
width=8cm,
height=4cm,
scale only axis,
%enlargelimits=false% not needed after all
]
\only<1>{ \addplot [domain=0:5] {x^3}; }
\only<2>{ \addplot [domain=0:15] {x^3}; }
\only<3>{ \addplot [domain=0:100] {x^3}; }
\only<4>{ \addplot [domain=0:1000] {x^3}; }
\end{axis}
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}