使用 foreach 和 pgfplots 進行投影機演示,每張投影片上的每個圖形

使用 foreach 和 pgfplots 進行投影機演示,每張投影片上的每個圖形

我正在做一個beamer演示。我pgfplots需要載入資料檔案的單列,如下所示:

1   10  50  -50
2   11  51  -49
3   12  52  -48
4   13  53  -47
5   14  54  -46
6   15  55  -45
...

每個數字都應該出現在每張投影片上。

我正在使用這段程式碼,但我無法使其正常工作。

\documentclass[10pt,xcolor={svgnames,x11names,dvipsnames}]{beamer}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc} 
\usepackage[spanish,es-nodecimaldot]{babel}
\usepackage{libertine}
\usepackage{xmpmulti}
\usepackage[T1]{fontenc}
\usepackage{slantsc}
\usepackage{amsmath}
\usepackage{graphicx}% http;//ctan.org/pkg/graphicx

\usepackage{rotating}
\usepackage{pgf,tikz,tikz-3dplot}
\usepackage{pgfplots}
\usetikzlibrary{arrows,patterns,calc,spy,shapes,petri,shapes.misc}
\usepgfplotslibrary{groupplots,colormaps}

\usetikzlibrary{pgfplots.colormaps}
\usepackage{mathrsfs}

\usetikzlibrary{
shapes,
shapes.geometric,
shapes.symbols,
shapes.arrows,
shapes.multipart,
shapes.callouts,
shapes.misc}

\begin{document}

\begin{frame}
  \begin{tikzpicture}
    \begin{axis}[
      clip=false,
      axis lines=center,
      height=5.5cm, width=8cm,
      x post scale=1.4
    ]
      \foreach \num in {1,2,3}
        \only<\num>{
          \addplot[
            DodgerBlue1,
            line width=0pt,
            fill=Blue,
            opacity=0.5
          ] table [
            col sep=tab,
            trim cells=true,
            x index=0, y index=\num
          ] {espectros_im_P_10_F_0_sigma_500.txt}\closedcycle ;
        }
    \end{axis}
  \end{tikzpicture}
\end{frame}

\end{document}

答案1

以下是您想要的嗎?

地塊

我唯一改變的是刪除,col sep=tab因為資料在貼上時出現間隔(因此可能與您無關)並移動分號。由於範例程式碼中缺少定義/包,其他所有內容都在那裡。例如,顏色不一定是定義的,所以我只是切換到標準的顏色。

\begin{filecontents*}{\jobname.dat}
1 10 50 -50
2 11 51 -49
3 12 52 -48
4 13 53 -47
5 14 54 -46
6 15 55 -45
\end{filecontents*}
\documentclass{beamer}
\usepackage{pgfplots}
\begin{document}
\begin{frame}
  \begin{tikzpicture}
    \begin{axis}[
      clip=false,
      axis lines=center,
      height=5.5cm,
      width=8cm,
      x post scale=1.4,
      ]
      \foreach \num in {1,2,3}
      \only<\num>{\addplot [blue, line width=0pt, fill=blue!20, opacity=0.5,]    table [trim cells=true, x index=0, y index=\num] {\jobname.dat}\closedcycle };
    \end{axis}
  \end{tikzpicture}
\end{frame}
\end{document}

相關內容