使用 foreach 在绘图中生成计算索引

使用 foreach 在绘图中生成计算索引

我有一张包含 8 列的表格,我想生成 4 个图(1 vs 0、3 vs 2、5 vs 4 和 7 vs 6)。我打算使用 foreach 来生成图,使用

\begin{tikzpicture}
\begin{axis}
\foreach \x in {0,...,3} {
\addplot table[x index = \x * 2, y index = \x * 2 + 1]\table
}
\end{axis}
\end{tikzpicture}

其中\table是存储表。

但我似乎不允许对索引进行算术运算。有办法吗?

更新:不太好 WE:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\begin{tikzpicture}
\pgfplotstableread{
-1.5875 -1.5324 -1.4773 -1.4222 -1.3671 -1.312  -1.2569 -1.2018
-1.5875 -1.5324 -1.4773 -1.4222 -1.3671 -1.312  -1.2569 -1.2018
0.013166    0.013156    0.013147    0.013141    0.013137    0.013135    0.013135    0.013139
0.013156    0.013146    0.013138    0.013132    0.013128    0.013127    0.013128    0.013131
}\loadedtable
\pgfplotstabletranspose[colnames from=,input colnames to=r]\transtable\loadedtable
  \begin{axis}
\foreach \x in {0,...,1} {
  \pgfmathtruncatemacro{\Xcol}{\x * 2}
  \pgfmathtruncatemacro{\Ycol}{1 + \x * 2}
  \addplot[mark=,color=blue] table[x index =\Xcol,y index =\Ycol]\transtable;
}
  \end{axis}
\end{tikzpicture}
\end{document}

答案1

对于这种情况,我只会使用简单的数字表达式,否则您必须使用\pgfmathparse{...}\pgfmathresult对,这会很繁琐。相反,使用evaluate键进行算术运算并使用生成的宏。PGF/TikZ 手册中有几个示例:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\pgfplotstableread[header=false]{
0 1 2 3 4 5 6 7
5 8 6 4 0 6 7 8
}\mytable
\begin{document}
\begin{tikzpicture}
\begin{axis}
\foreach \x in {0,...,3} {
\addplot table[x index=\number\numexpr\x*2\relax,
y index=\number\numexpr\x*2+1\relax] {\mytable};
}
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容