Usando \addplot+ e \foreach no pgfplot

Usando \addplot+ e \foreach no pgfplot

Eu tenho quatro arquivos de texto com 21 colunas cada e quero plotar, para cada arquivo, a primeira coluna como x e, em seguida, as 20 colunas seguintes como y. Para cada arquivo, coloque tudo junto no mesmo gráfico. São basicamente 20 réplicas em 4 condições diferentes.

Eu tenho o código a seguir, usando \foreach, mas gostaria de torná-lo mais limpo usando, \addplot+em vez de \addplotusar o argumento fill. Se eu usar \addplot+dentro do \foreachloop, cada réplica terá sua própria cor e não é realmente o que eu quero.

Para ser claro, o código a seguir faz o que eu quero, mas gostaria de ouvir sobre soluções para torná-lo melhor.

\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}

Responder1

  • Seu exemplo está faltando\usepackage{pgfplots}
  • Você não precisa necessariamente draw=color, apenas coloré o suficiente
  • Comopercussãodisse, um foreachloop deve ser suficiente
  • Você disse que tinha 21 colunas, então o loop deveria rodar até esse valor
  • \addplot[options]deve executar apenas o options, então você pode deixar de fora o mark=none. Caso contrário, você pode especificar\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}

informação relacionada