如何“动画”pgfplot 图片以在投影仪幻灯片中滑动

如何“动画”pgfplot 图片以在投影仪幻灯片中滑动

我有以下投影仪幻灯片:

\documentclass[10pt]{beamer}

\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}
\begin{frame}
    \begin{figure}[h]
    \centering
    \begin{tikzpicture}
        \begin{axis}[
        ]
            \addplot[dashed, const plot mark left] coordinates {
                (0, 0)
                (1, 0)
                (2, 0)
                (3, 0)
                (4, 0)
                (5, 0)
                (6, 0)
                (7, 5)
                (8, 7)
                (9, 0)
                (10, 0)
                (11, 0)
                (12, 0)
                (13, 0)
                (14, 0)
            };
        \end{axis}
    \end{tikzpicture}
    \end{figure}
\end{frame}
\end{document}

当我前进到“下一张幻灯片”时,我想让情节向右移动 1 个单位,但我想保持相同的幻灯片编号。

我可以通过一堆连续的帧来伪造这种效果,其中我只需将x图中的所有坐标增加 1 个单位,但一定有更好的方法。

有人可以建议我可以研究的东西吗?

答案1

您可以使用overlay-beamer-styles库并使用覆盖来保持相同帧号

\documentclass[10pt]{beamer}

\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{overlay-beamer-styles}

\begin{document}
\begin{frame}
    \begin{figure}
    \begin{tikzpicture}
        \begin{axis}[
        ]
            \addplot[
              dashed, 
              const plot mark left,
              alt=<2>{xshift=0.4cm}{},
              alt=<3>{xshift=0.8cm}{}
            ] coordinates {
                (0, 0)
                (1, 0)
                (2, 0)
                (3, 0)
                (4, 0)
                (5, 0)
                (6, 0)
                (7, 5)
                (8, 7)
                (9, 0)
                (10, 0)
                (11, 0)
                (12, 0)
                (13, 0)
                (14, 0)
            };
        \end{axis}
    \end{tikzpicture}
    \end{figure}
\end{frame}
\end{document}

在此处输入图片描述

(其值0.4cm及其倍数可能需要微调,这只是一个粗略的猜测)

答案2

如果图表发生变化,基础数据也必须随之变化。可以使用基础数据进行过滤x filter/.expression={}来实现这一点。如果绘制了合适的数据,则无需手动调整,而不是在水平上移动图表tikzpicture

在此处输入图片描述

\documentclass[10pt]{beamer}

\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}
\begin{frame}
    \foreach \i in {1,...,7} {\only<\i>{%
    \begin{figure}
    \begin{tikzpicture}
        \begin{axis}[
        ]
            \addplot[
              dashed, const plot mark left,
              unbounded coords=jump,
              x filter/.expression={x+\i-1>14 ? nan : x+\i-1}
            ] coordinates {
                (-\i+1, 0)
                (0, 0)
                (1, 0)
                (2, 0)
                (3, 0)
                (4, 0)
                (5, 0)
                (6, 0)
                (7, 5)
                (8, 7)
                (9, 0)
                (10, 0)
                (11, 0)
                (12, 0)
                (13, 0)
                (14, 0)
            };
        \end{axis}
    \end{tikzpicture}
    \end{figure}
    }}
\end{frame}
\end{document}

相关内容