考虑以下情节
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread{
1 3 6 4
2 2 5 2
3 4 4 1
4 5 2 3
}\table
\begin{tikzpicture}
\begin{axis}
\foreach \i in {1,...,3}{%
\addplot table[x index=0,y index=\i] {\table};
}
\end{axis}
\end{tikzpicture}
\end{document}
我想将其用作不同列数的输入文件的模板。为此,我需要用加载表的列数替换3
ine命令。在这个环境中是否有类似的东西可以理解?foreach
\pgfplotstablecols
答案1
有\pgfplotstablegetcolsof{<table>}
,它存储了宏中给定表的列数\pgfplotsretval
。您需要从这个数字中减一才能获得最后一列的正确索引:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread{
1 3 6 4 2
2 2 5 2 1
3 4 4 1 5
4 5 2 3 1
}\table
\begin{tikzpicture}
\begin{axis}
\pgfplotstablegetcolsof{\table}
\pgfmathparse{\pgfplotsretval-1}
\foreach \i in {1,...,\pgfmathresult}{%
\addplot table[x index=0,y index=\i] {\table};
}
\end{axis}
\end{tikzpicture}
\end{document}