在 pgfplots 中使用 foreach 循环变量作为节点标签

在 pgfplots 中使用 foreach 循环变量作为节点标签

我有一个由 pgfplots 中的表生成的(多)线图:

\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread{table.tsv}\loadedtable
  \foreach \metavar in {foo,bar} {
    \addplot table[x index=1,y=\metavar] from \loadedtable node {\metavar};
  }
\end{axis}
\end{tikzpicture}
\end{document}

效果很好除了对于我想放置在每行末尾的节点,作为一种排队传奇。

这里,LaTeX 抱怨道:

! Argument of \T1\metavar has an extra }.
<inserted text> 
                 \par 

如果我\metavar用一些文字文本替换节点标签,一切都会编译正常,但这当然会忽略要点\foreach。那么如何在这样的地方访问循环变量呢?

答案1

在这种情况下,您必须使用\pgfplotsforeachungrouped,以确保循环不会在其自己的组内执行。

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread[row sep=crcr]{
X foo bar\\
1 10 20\\
2 10 30\\
3 20 40\\
}\loadedtable
  \pgfplotsinvokeforeach {foo,bar} {
    \addplot table [x index=0,y=#1] \loadedtable node [anchor=south] {#1};
  }
\end{axis}
\end{tikzpicture}
\end{document}

相关内容