pgfplot:在坐标内使用 pgfmathdeclarefunction 定义的函数

pgfplot:在坐标内使用 pgfmathdeclarefunction 定义的函数

此代码片段使用\pgfmathdeclarefunction(例如f())和定义了一个简单的函数\pgfmathparse。我想f()在其他坐标系中使用定义的函数,例如(0.2, f(0.2))(0.2, f(0.2)。请注意,后者少了一个)。两种用法都会绘制点,但前者会导致 pgfplots 错误:

错误| 包 pgfplots 错误:抱歉,我无法读取')'附近的绘图坐标

我想知道这些定义函数的用法是否f()正确?

\begin{tikzpicture}
  \pgfmathdeclarefunction{f}{1}{%
    \pgfmathparse{#1}%
  }
  \begin{axis}[xmin=0, xmax=1, ymin=0, ymax=1,]
    % this draw the plot, but also report an error
    \addplot[mark=*, blue] coordinates {(0.2, f(0.2))};
    % this works
    \addplot[mark=*, blue] coordinates {(0.2, f(0.2)};
  \end{axis}
\end{tikzpicture}

答案1

如果该函数在坐标对内使用,则会得到两个右括号:

(0.2, f(0.2))

这显然会让解析器感到困惑。当读取参数时,这些括号不会像 \TeX 中的花括号那样匹配。一组花括号保护着内部括号:

(0.2, {f(0.2)})

然后,内部分隔符将被隐藏,以便解析器寻找结束坐标对分隔符。

相关内容