梅威瑟:

梅威瑟:

我有一个包含多列的大型数据文件。这使我无法手动添加多个命令\addplot,因此我使用。问题是似乎没有使用,并且绘制的所有列都是相同的样式。有没有办法更改每个新列的线条样式?理想情况下,它将具有与使用多个命令完全相同的行为,并且如果可能的话还使用自定义。gnuplotpgfplotsgnuplotcycle listgnuplot\addplotcycle list

梅威瑟:

\documentclass{article}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
  \begin{tikzpicture}
    \begin{axis}[
      width=\columnwidth,
      height=\columnwidth,]

    \addplot+ gnuplot [raw gnuplot] {%
      set key outside;
      plot for [col=2:6] 'data.dat' using 1:col;
    };
    \end{axis}
  \end{tikzpicture}%
\end{document}

数据文件 | data.txt

1   0   0   0   0   0
20001   0.036388    0.028517    -0.033069   -0.034961   -0.025119
40001   0.078273    0.041198    -0.05016    -0.040372   -0.036597
60001   0.083334    0.080893    -0.067594   -0.062035   -0.048915
80001   0.10042 0.097744    -0.08017    -0.086433   -0.083851
1e+05   0.13486 0.12073 -0.097362   -0.10287    -0.093411
1.2e+05 0.15235 0.15038 -0.10748    -0.11208    -0.10857
1.4e+05 0.1604  0.15882 -0.11528    -0.15034    -0.12262
1.6e+05 0.18981 0.19139 -0.13932    -0.15833    -0.12653
1.8e+05 0.2069  0.21622 -0.13932    -0.16647    -0.15685
2e+05 0.21894 0.22313 -0.14568  -0.19297  -0.2045

结果:

在此处输入图片描述

答案1

如果要为不同的数据列设置不同的线条样式,则必须使用单独的\addplot命令。幸运的是,您不必手动重复命令:相反,您可以使用以下方式循环遍历列\pgfplotsinvokeforeach

\documentclass{article}
\usepackage{tikz,pgfplots, filecontents}
\pgfplotsset{compat=newest}

\begin{filecontents*}{data.dat}
1   0   0   0   0   0
20001   0.036388    0.028517    -0.033069   -0.034961   -0.025119
40001   0.078273    0.041198    -0.05016    -0.040372   -0.036597
60001   0.083334    0.080893    -0.067594   -0.062035   -0.048915
80001   0.10042 0.097744    -0.08017    -0.086433   -0.083851
1e+05   0.13486 0.12073 -0.097362   -0.10287    -0.093411
1.2e+05 0.15235 0.15038 -0.10748    -0.11208    -0.10857
1.4e+05 0.1604  0.15882 -0.11528    -0.15034    -0.12262
1.6e+05 0.18981 0.19139 -0.13932    -0.15833    -0.12653
1.8e+05 0.2069  0.21622 -0.13932    -0.16647    -0.15685
2e+05 0.21894 0.22313 -0.14568  -0.19297  -0.2045
\end{filecontents*}

\begin{document}
  \begin{tikzpicture}
    \begin{axis}[
      width=\columnwidth,
      height=\columnwidth,]

\pgfplotsinvokeforeach{2,...,6}{
    \addplot gnuplot [raw gnuplot] {%
      set key outside;
      plot 'data.dat' using 1:#1;
    };
    }
    \end{axis}
  \end{tikzpicture}%
\end{document}

相关内容