![梅威瑟:](https://linux22.com/image/275105/%E6%A2%85%E5%A8%81%E7%91%9F%EF%BC%9A.png)
我有一个包含多列的大型数据文件。这使我无法手动添加多个命令\addplot
,因此我使用。问题是似乎没有使用,并且绘制的所有列都是相同的样式。有没有办法更改每个新列的线条样式?理想情况下,它将具有与使用多个命令完全相同的行为,并且如果可能的话还使用自定义。gnuplot
pgfplots
gnuplot
cycle list
gnuplot
\addplot
cycle 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}