![使用不同的值对多个 pgfplots 进行动画处理](https://linux22.com/image/326869/%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E5%80%BC%E5%AF%B9%E5%A4%9A%E4%B8%AA%20pgfplots%20%E8%BF%9B%E8%A1%8C%E5%8A%A8%E7%94%BB%E5%A4%84%E7%90%86.png)
我来研究如何用 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}