我正在关注我以前的问题关于 tikzpicture 中 foreach 循环的使用:
以下是带有可用代码的简单描述,但所有标记都用红色标出:
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.18}
\begin{document}
\newcommand{\Table}{
\begin{tikzpicture}
\begin{axis}
\foreach \A / \B/ \C in {1/100/green, 2/200/red}
\addplot [
mark=diamond*,
color=red
]
coordinates {(\B, \A)};
\end{axis}
\end{tikzpicture}
}
\Table
\end{document}
在我的例子中,我想将颜色设为 foreach 循环中的变量。我尝试采用上一个问题中成功建议的标记标签方法。因此,我将其更改color=red
为
visualization depends on={value \C\as\myC},
color={\myC}
但在这种情况下,它无法编译并返回“未定义的控制序列”错误。我很想了解此类问题背后的原因,以及可能的解决方法。
提前致谢。
答案1
以下是基于的答案此处的解决方案。添加命令后,它起作用了edef
,temp
并且noexpand
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.18}
\begin{document}
\newcommand{\Table}{
\begin{tikzpicture}
\begin{axis}
\foreach \A / \B/ \C in {1/100/green, 2/200/red, 3/300/blue} {%
\edef\temp{%
\noexpand
\addplot [
mark=diamond*,
color=\C,
]
coordinates {(\B, \A)};
}\temp
}
\end{axis}
\end{tikzpicture}
}
\Table
\end{document}
我得到的是: