使用 pgfplots 制作动画图

使用 pgfplots 制作动画图

我正在创建一个 beamer 演示文稿,我想用 pgfplots 制作一个动画图。这是图形的 MWE:

\documentclass{beamer}

\usepackage{tikz,pgfplots}

\begin{document}

\begin{frame}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[%
width=2in,
height=2in,
scale only axis,
minor tick num=10,
xmin=1,
xmax=10,
ymin=1,
ymax=10,
axis x line*=bottom,
axis y line*=left,
]
\plot[mark=*, mark options={fill=black}] 
 coordinates{
(1,  1)
(2, 2)
(3, 3)
(4, 4)
(5, 5)
(6, 6)
(7, 7)
(8, 8)
(9, 9)
(10, 10)
};
\end{axis}
\end{tikzpicture}

\end{figure}
\end{frame}

\end{document}

我想让点以动画形式连续出现。我不知道该怎么做,有人能帮我吗?提前谢谢。

答案1

在此处输入图片描述

pdflatex在第一个文件上运行anim.tex

\documentclass{beamer}
\usepackage{tikz,pgfplots,multido}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}

\begin{document}

\multido{\i=0+1}{10}{%
\begin{tikzpicture}
\begin{axis}[
width=2in,
height=2in,
scale only axis,
minor tick num=10,
xmin=1,
xmax=10,
ymin=1,
ymax=10,
axis x line*=bottom,
axis y line*=left,
]
\plot[mark=*, mark options={fill=black},
    x filter/.code={\pgfmathparse{#1<=\i ? #1 : "nan"}}]
 coordinates{
(1, 1)
(2, 2)
(3, 3)
(4, 4)
(5, 5)
(6, 6)
(7, 7)
(8, 8)
(9, 9)
(10, 10)
};
\end{axis}
\end{tikzpicture}
}

\end{document}

然后按您想要的方式调用这个,但与第一个位于同一目录中:

\documentclass{beamer}
\usepackage{animate}
\begin{document}

\begin{frame}
    \frametitle{Animation}
    \begin{center}
        \animategraphics[palindrome]{12}{anim}{}{}
    \end{center}
\end{frame}

\end{document}

答案2

不需要两个单独的源文件。

参数化(=0...9)tikzpicture可以放入环境\multiframe内的代码块中animateinline

请注意,由于某种原因,该选项必须与的环境[fragile]一起使用。beamerframe

在此处输入图片描述

\documentclass{beamer}
\usepackage{animate}
\usepackage{tikz,pgfplots}

\begin{document}

\begin{frame}[fragile]
\begin{animateinline}[palindrome,controls]{12}
\multiframe{10}{i=0+1}{%
  \begin{tikzpicture}
    \begin{axis}[
      width=2in,
      height=2in,
      scale only axis,
      minor tick num=10,
      xmin=1,
      xmax=10,
      ymin=1,
      ymax=10,
      axis x line*=bottom,
      axis y line*=left,
    ]
      \plot[
        mark=*, mark options={fill=black},
        x filter/.code={\pgfmathparse{#1<=\i ? #1 : "nan"}}
      ] coordinates {
        (1, 1)
        (2, 2)
        (3, 3)
        (4, 4)
        (5, 5)
        (6, 6)
        (7, 7)
        (8, 8)
        (9, 9)
        (10, 10)
      };
    \end{axis}
  \end{tikzpicture}
}
\end{animateinline}
\end{frame}

\end{document}

相关内容