pgfplots 并使用轴 cs 添加点

pgfplots 并使用轴 cs 添加点

我试图使用循环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}

相关内容