![pgfplot:在坐标内使用 pgfmathdeclarefunction 定义的函数](https://linux22.com/image/253051/pgfplot%EF%BC%9A%E5%9C%A8%E5%9D%90%E6%A0%87%E5%86%85%E4%BD%BF%E7%94%A8%20pgfmathdeclarefunction%20%E5%AE%9A%E4%B9%89%E7%9A%84%E5%87%BD%E6%95%B0.png)
此代码片段使用\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)})
然后,内部分隔符将被隐藏,以便解析器寻找结束坐标对分隔符。