我不明白为什么这不起作用。我改成x
了y
,z
但没有起作用。有什么想法吗?
\documentclass[11pt]{article}
\usepackage{pgfplots,pgfplotstable}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
grid=major,
xmin = 0, xmax = 6,
]
\addplot[red, domain=0:6, samples=10,]{x};
\foreach \x in {1.,2.,3.,4.,5.}
\node[] at (\x , 1) {Hello};
\end{axis}
\end{tikzpicture}
\end{document}
添加:但\addplot
只要变量名不是,\x
它就可以正常工作\y
\begin{tikzpicture}
\begin{axis}[
grid=major,
]
\foreach \w in {1,2,...,5} {
\addplot[red, domain=0:6, samples=10,]{\w * x};
\addplot[blue, mark=square, ycomb] coordinates {(\w, \w^2 - 1)};
}
\end{axis}
\end{tikzpicture}
答案1
另一个选择是使用\pgfplotsinvokeforeach
:
\pgfplotsinvokeforeach{1,2,3,4,5} {
\node[] at (#1 , 1) {Hello};
}
其中参数可用为#1
。这得出:
代码:
\documentclass[11pt]{article}
\usepackage{pgfplots,pgfplotstable}
%\usepgfplotslibrary{colormaps}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
grid=major,
xmin = 0, xmax = 6,
legend style={
legend pos= north west,},
legend style={%at={(0.5,0.95)},anchor=north,
legend columns=1},
]
\addplot[red, domain=0:6, samples=10,]{x};
\pgfplotsinvokeforeach{1,2,3,4,5} {
\node[] at (#1 , 1) {Hello};
}
\end{axis}
\end{tikzpicture}
答案2
\x
需要扩展,因为它位于其自己的\foreach
组中,因此其值是冒泡的。通过首先扩展它,将的实际值\x
传递给\node
,而不是间接引用\x
,后者不会持久。
\documentclass[11pt]{article}
\usepackage{pgfplots,pgfplotstable}
%\usepgfplotslibrary{colormaps}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
grid=major,
xmin = 0, xmax = 6,
legend style={
legend pos= north west,},
legend style={%at={(0.5,0.95)},anchor=north,
legend columns=1},
]
\addplot[red, domain=0:6, samples=10,]{x};
\foreach \x in {1.,2.,3.,4.,5.}
\def\tmp{\node[] at (}
\expandafter\tmp\x , 1) {Hello};
\end{axis}
\end{tikzpicture}
\end{document}