pgfplot で \addplot+ と \foreach を使用する

pgfplot で \addplot+ と \foreach を使用する

それぞれ 21 列のテキスト ファイルが 4 つあり、各ファイルの最初の列を x として、次の 20 列を y としてプロットします。各ファイルについて、すべてを同じグラフにまとめます。基本的には、4 つの異なる条件で 20 回繰り返します。

を使用した次のコードがありますが、 fill 引数ではなく\foreachを使用して、よりわかりやすくしたいと思います。ループ内で を使用すると、各複製に独自の色が設定され、これは私が望んでいるものとは異なります。\addplot+\addplot\addplot+\foreach

明確に言うと、次のコードは私が望んでいることを実行しますが、それをより良くするための解決策について聞きたいです。

\documentclass[professionalfonts,11pt]{beamer}
\begin{document}
\begin{frame}{Conséquences des variations du taux de croissance}

\begin{center}
    \begin{tikzpicture}
        \begin{semilogyaxis}[
            xlabel=Temps,
            ylabel={Taille de population},
            cycle list name = monokai,
            legend pos = north west
            ]
            \foreach \yindex in {2,...,20}
                \addplot[mark = none, draw = RYB1] table [y index = \yindex] {data/vardem_30.dat};
            \foreach \yindex in {2,...,20}
                \addplot[mark = none, draw = RYB2] table [y index = \yindex] {data/vardem_10.dat};
            \foreach \yindex in {2,...,20}
                \addplot[mark = none, draw = RYB3] table [y index = \yindex] {data/vardem_3.dat};
            \foreach \yindex in {2,...,20}
                \addplot[mark = none, draw = RYB4] table [y index = \yindex] {data/vardem_1.dat};
        \end{semilogyaxis}
    \end{tikzpicture}
\end{center}

\end{frame}
\end{document}

答え1

  • 例が見つかりません\usepackage{pgfplots}
  • 必ずしも必要ではありませんがdraw=colorcolor十分です
  • として打楽器1回のforeachループで十分だ
  • 21列あるとおっしゃったので、ループはその値まで実行されるはずです
  • \addplot[options]のみを実行する必要があるoptionsため、 を省略できますmark=none。それ以外の場合は、 を指定します。\pgfplotsset{every axis plot post/.append style={mark=none}}

\documentclass[professionalfonts,11pt]{beamer}
\usepackage{pgfplots}

\begin{document}

\begin{frame}{Conséquences des variations du taux de croissance}
    \begin{center}
        \begin{tikzpicture}
          \begin{semilogyaxis}
          [ xlabel=Temps,
            ylabel={Taille de population},
            cycle list name = monokai,
            legend pos = north west,
            ]
          \foreach \yindex in {2,...,21}
            {   \addplot[RYB1] table [y index = \yindex] {data/vardem_30.dat};
            \addplot[RYB2] table [y index = \yindex] {data/vardem_10.dat};
            \addplot[RYB3] table [y index = \yindex] {data/vardem_3.dat};
            \addplot[RYB4] table [y index = \yindex] {data/vardem_1.dat};
            } 
          \end{semilogyaxis}
        \end{tikzpicture}
    \end{center}
\end{frame}

\end{document}

関連情報