使用不同的值对多个 pgfplots 进行动画处理

使用不同的值对多个 pgfplots 进行动画处理

我来研究如何用 Tex 绘制学生法则,我对找到的第一个答案感到非常满意这里

不过,我发现第一个答案中显示的动画比我想要的更好。

但我没有能力创造它。我四处寻找有关动画包,但我的尝试没有成功。

我觉得

%\documentclass[handout]{beamer}
\documentclass{beamer}
\usetheme[secheader]{Boadilla}
\usecolortheme{seahorse}
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc}
\usepackage{hyperref}               % Pour les liens hypertexte
\usepackage{pgfplots}               % Pour les graphes
\usepackage{animate}                % Pour les animations
\def\basefunc{                      % La densité de Student
    gamma(.5*(\n+1))/(sqrt(\n*pi)*gamma(.5*\n))*((1+x^2/\n)^(-.5*(\n+1)))%
}

\begin{document}

\frame{
  \begin{animateinline}{1}
        \foreach \n in {1}{    
            \begin{tikzpicture}
            \begin{axis}[ymin=0,ymax=.41,   ]
                \addplot gnuplot [
                    smooth,
                    no marks,
                    domain={-6:+6},
                    ]{\basefunc};
                \legend{$n = \n$}
            \end{axis}
        \end{tikzpicture}
        }

    \foreach \n in {2, 3, 4, 5}{ 
    \newframe   
    \begin{tikzpicture}
            \begin{axis}[ymin=0,ymax=.41,   ]
                \addplot gnuplot [
                    smooth,
                    no marks,
                    domain={-6:+6},
                    ]{\basefunc};
                \legend{$n = \n$}
            \end{axis}
        \end{tikzpicture}
        }
  \end{animateline}
}

\end{document}

可以工作但实际上不行(我收到 * \begin{lrbox} on input line 127 ending by \end{animateline}.* 错误)。

有人能帮我吗 ?

答案1

  • 修改后的定义\basefunc采用一个参数
  • \foreach...-->\multiframe...
  • 使用siunitx包来格式化图例中的数字

pdflatex --shell-escape...


\documentclass{beamer}

\usepackage{pgfplots}
\usepackage{animate}
\usepackage{siunitx}

\newcommand\basefunc[1]{%
    gamma(.5*(#1+1))/(sqrt(#1*pi)*gamma(.5*#1))*((1+x^2/#1)^(-.5*(#1+1)))%
}
\begin{document}

\begin{frame}{student}

\begin{animateinline}[controls, palindrome]{4} % four frames per second  
  \multiframe{20}{n=1+1}{ %20 frames with \n running from 1.0 trough 20.0
    \begin{tikzpicture}
        \begin{axis}[
            ymin=0,
            ymax=.41,
        ]
            \addplot gnuplot [
                smooth,
                no marks,
                domain={-6:+6},
              ]{\basefunc{\n}};
            \legend{$n = \num{\n}$}
        \end{axis}
    \end{tikzpicture}
  }  
\end{animateinline}

\end{frame}
\end{document}

相关内容