我正在使用循环创建多个图foreach
。我希望每个图都有一个依赖于循环参数的图例条目。我的第一次尝试是(文章底部的完整 MWE)
\foreach \p in {0, .125, ..., 1}{
\addplot {\p * x};
\addlegendentry{\p}
}
但是这会引发错误。我尝试\addlegendentry{\p}
用替换\expandafter\addlegendentry\p
。这在一定程度上有效,只是似乎只有 的第一个字符\p
最终出现在图例中。有没有办法将 的全部内容\p
放入图例中?我不太熟悉,\expandafter
所以我怀疑错误可能出在那里。
MWE 演示了截断图例条目的问题:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend pos=outer north east,
]
\foreach \p in {0, .5, ..., 4} {
\addplot {\p * x};
\expandafter\addlegendentry\p
}
\end{axis}
\end{tikzpicture}
\end{document}
生成的pdf:
答案1
OP 的提议\expandafter\addlegendentry\p
只是将一次扩展的第一个字符(第一个标记)\p
作为 的参数\addlegendentry
。因此, 的扩展\p
需要保留在括号组中,以便所有数字都被视为参数。为了实现这一点...
关键是\expandafter\addlegendentry\expandafter{\p}
。
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend pos=outer north east,
]
\foreach \p in {0, .5, ..., 4} {
\addplot {\p * x};
\expandafter\addlegendentry\expandafter{\p}
}
\end{axis}
\end{tikzpicture}
\end{document}