从不同的文件读取每一帧的数据(animateinline)

从不同的文件读取每一帧的数据(animateinline)

我希望创建一个存储在不同文件中的数据图,并制作一个动画。但我遇到了错误Missing \endcsname inserted。由于我在仅需要文本的字段中使用了“非文本”组件,因此我遇到了错误,我理解这一点。我无法找到解决方法。任何帮助都将不胜感激。

梅威瑟:

\documentclass[]{standalone} 

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

\pgfplotsset{width=7cm,compat=newest,height=7cm}

\begin{document}

    \begin{animateinline}[autoplay,loop]{5}
        \multiframe{10}{iX=2+1}{
            \begin{tikzpicture}[scale=1.5]
                \begin{axis}[scaled ticks=false,xmin=0,ymin=0,ymax=1,legend entries= {$n= \iX$},legend pos=north west, legend style = {font=\scriptsize}]
                    \addplot[color=blue,ultra thick] table {data/n\iX.dat};
                \end{axis}
            \end{tikzpicture}
        }
    \end{animateinline}

    
\end{document}

答案1

该解决方案提供了您想要的用于处理多个文件的方法。

我将每列的每个数据拆分y到不同的文件中并删除了一些行。

主要选项是\addplot table {Fre\i.dat};。随后是 MWE。

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

\usepackage{filecontents}
\begin{filecontents*}{Fre1.dat}
  0.0000000e+00   9.7322390e+00
  2.5000000e+00   9.7404206e+00
  5.0000000e+00   9.7651029e+00
  7.5000000e+00   9.8067018e+00
  1.0000000e+01   9.8659247e+00
  1.2500000e+01   9.9437917e+00
  1.5000000e+01   1.0041667e+01
  1.7500000e+01   1.0161304e+01
  2.0000000e+01   1.0304897e+01
  2.2500000e+01   1.0475157e+01
\end{filecontents*}
\begin{filecontents*}{Fre2.dat}
0.0000000e+00   1.3985949e+01
2.5000000e+00   1.4001132e+01
5.0000000e+00   1.4046619e+01
7.5000000e+00   1.4122249e+01
1.0000000e+01   1.4227833e+01
1.2500000e+01   1.4363269e+01
1.5000000e+01   1.4528713e+01
1.7500000e+01   1.4724777e+01
2.0000000e+01   1.4952727e+01
2.2500000e+01   1.5214662e+01
\end{filecontents*}
\begin{filecontents*}{Fre3.dat}
  0.0000000e+00   1.5525350e+01
  2.5000000e+00   1.5546305e+01
  5.0000000e+00   1.5609681e+01
  7.5000000e+00   1.5717003e+01
  1.0000000e+01   1.5870771e+01
  1.2500000e+01   1.6074399e+01
  1.5000000e+01   1.6332129e+01
  1.7500000e+01   1.6648943e+01
  2.0000000e+01   1.7030511e+01
  2.2500000e+01   1.7483207e+01
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[scaled ticks=false,xmin=0,ymin=0, legend entries={$n=1$}, legend pos=north west, legend style = {font=\scriptsize}]
    \addplot table {Fre1.dat};
    \addplot table {Fre2.dat};
    \addplot table {Fre3.dat};
  \end{axis}
\end{tikzpicture}

\begin{animateinline}[controls,loop,bb=0 0 250 250]{1}
  \multiframe{3}{i=1+1}{%
    \begin{tikzpicture}
      \begin{axis}[scaled ticks=false, xmin=0,ymin=0, xmax=30,ymax=20, legend entries={$n=\i$}, legend pos=north west, legend style = {font=\scriptsize}]
        \addplot table {Fre\i.dat};
      \end{axis}
    \end{tikzpicture}
  }
\end{animateinline}
\end{document}

动画与基础图表一起呈现。

在此处输入图片描述

答案2

此解决方案针对您的问题提出了略有不同的方法。它使用具有多列的单个文件来制作日期动画。

我用了:

主要选项是y index=\i。随后是 MWE。

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

\usepackage{filecontents}
\begin{filecontents*}{Fre.dat}
  0.0000000e+00   9.7322390e+00   1.3985949e+01   1.5525350e+01
  2.5000000e+00   9.7404206e+00   1.4001132e+01   1.5546305e+01
  5.0000000e+00   9.7651029e+00   1.4046619e+01   1.5609681e+01
  7.5000000e+00   9.8067018e+00   1.4122249e+01   1.5717003e+01
  1.0000000e+01   9.8659247e+00   1.4227833e+01   1.5870771e+01
  1.2500000e+01   9.9437917e+00   1.4363269e+01   1.6074399e+01
  1.5000000e+01   1.0041667e+01   1.4528713e+01   1.6332129e+01
  1.7500000e+01   1.0161304e+01   1.4724777e+01   1.6648943e+01
  2.0000000e+01   1.0304897e+01   1.4952727e+01   1.7030511e+01
  2.2500000e+01   1.0475157e+01   1.5214662e+01   1.7483207e+01
  2.5000000e+01   1.0675401e+01   1.5513636e+01   1.8014219e+01
  2.7500000e+01   1.0909671e+01   1.5853762e+01   1.8631749e+01
  3.0000000e+01   1.1182876e+01   1.6240296e+01   1.9345313e+01
  3.2500000e+01   1.1500982e+01   1.6679755e+01   2.0166108e+01
  3.5000000e+01   1.1871246e+01   1.7180085e+01   2.1107451e+01
  3.7500000e+01   1.2302522e+01   1.7750913e+01   2.2185310e+01
  4.0000000e+01   1.2805653e+01   1.8403905e+01   2.3418947e+01
  4.2500000e+01   1.3393986e+01   1.9153253e+01   2.4831704e+01
  4.5000000e+01   1.4084049e+01   2.0016348e+01   2.6045676e+01
  4.7500000e+01   1.4896463e+01   2.1014686e+01   2.7132868e+01
  5.0000000e+01   1.5857171e+01   2.2175104e+01   2.8395420e+01
  5.2500000e+01   1.6999148e+01   2.3531505e+01   2.9867785e+01
  5.5000000e+01   1.8364789e+01   2.5127277e+01   3.1594083e+01
  5.7500000e+01   2.0009352e+01   2.7018776e+01   3.3631631e+01
  6.0000000e+01   2.2006006e+01   2.9280464e+01   3.6056144e+01 
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[scaled ticks=false,xmin=0,ymin=0, legend entries={$n=1$}, legend pos=north west, legend style = {font=\scriptsize}]
    \addplot table [x index=0,y index=1] {Fre.dat};
  \end{axis}
\end{tikzpicture}

\begin{animateinline}[controls,loop,bb=0 0 250 250]{1}
  \multiframe{3}{i=1+1}{%
    \begin{tikzpicture}
      \begin{axis}[scaled ticks=false, xmin=0,ymin=0, xmax=70,ymax=40, legend entries={$n=\i$}, legend pos=north west, legend style = {font=\scriptsize}]
        \addplot table [x index=0,y index=\i] {Fre.dat};
      \end{axis}
    \end{tikzpicture}
  }
\end{animateinline}
\end{document}

动画与基础图表一起呈现。

在此处输入图片描述

相关内容