以下代码的注释行给出了错误。似乎用 声明的函数\pgfmathdeclarefunction
不适用于tikz
命令...
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfmathdeclarefunction{myfunct}{3}{\pgfmathparse{#1+#2*#3}}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot {myfunct(1,2,x)};
% \node at (axis cs:2,{myfunct(1,2,2)}) {aaa};
% \draw (axis cs:2,{myfunct(1,2,2)}) -- (axis cs:0,5);
\end{axis}
\end{tikzpicture}
\end{document}
修复此问题的一种方法是定义如下宏:
\pgfmathsetmacro\mymacro{myfunct(1,2,2)}
并使用\mymacro
而不是myfunct(1,2,2)
但我想知道是否有办法直接使用myfunct(1,2,2)
而避免宏定义。
答案1
您所遇到的情况是由于 pgfplots 1.8 及更高版本不对 进行表达式解析axis cs
。换句话说:它期望 这样的纯数字42
,但不是2^2
。
这意味着您的数学函数是正确的,并且它可以在任何纯 tikz 操作中起作用(axis cs
是 pgfplots 的附加组件)。
当前 pgfplots 稳定版本 1.9 已对此进行了改进:现在axis cs
接受数学表达式。请注意,截至撰写本文时,1.9 版本还不到一周,因此 MikTeX 等可能需要一些时间才能接受它。升级 pgfplots 将解决该问题。