我试图使用循环foreach
来标记两个拐点pgfplot
,但是不起作用。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.10}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\infx}{1/sqrt(2)}
\pgfmathsetmacro{\infy}{exp(-.5)}
\begin{axis}[
xmin = -3,
xmax = 3,
ymin = -0.1,
ymax = 1.05,
domain = -4:4
]
\addplot[blue, samples = 500, smooth] gnuplot {exp(-x^2)};
\foreach \x/\y in {\infx/\infy, -\infx/\infy}{
\draw[red] (axis cs: \x, \y) circle[radius = .025];
}
\end{axis}
\end{tikzpicture}
\end{document}
有人告诉我:
Undefined control sequence.^M
<argument> axis cs: \x ^M
, \y ^M
l.34 \end{axis}^M
答案1
需要扩展变量,因为 pgfplots 不会立即绘制路径,而是收集它们。收集时,它只会看到\x
并\y
收集它们。绘制它们时,\x 和 \y 未定义,因此会出现错误。
如果您有一个变量,您可以使用\pgfplotsinvokeforeach
,但由于您有两个索引,因此您需要自己扩展它们。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.10}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\infx}{1/sqrt(2)}
\pgfmathsetmacro{\infy}{exp(-.5)}
\begin{axis}[
xmin = -3,
xmax = 3,
ymin = -0.1,
ymax = 1.05,
domain = -4:4
]
\addplot[blue, samples = 500, smooth] gnuplot {exp(-x^2)};
\foreach \x/\y in {\infx/\infy, -\infx/\infy}{
\begingroup\edef\temp{%
\endgroup\noexpand\draw[red] (axis cs: \x, \y) circle[radius = .025];}\temp
}
\end{axis}
\end{tikzpicture}
\end{document}