pgfplots 斜率场图中奇怪的额外 \else

pgfplots 斜率场图中奇怪的额外 \else

我正在尝试使用 pgfplots 绘制函数的斜率场,2x/y使得每个箭筒的长度是固定的。代码如下

\documentclass{minimal}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            declare function={
                f(\x,\y) = (\y != 0) * (2*\x/\y);
                length(\x,\y) = sqrt(1+(2*\x/\y)^2);
                result = (6 +0.5)/14;
            },
            domain=-0.5:6, 
            view={0}{90},
            axis lines=center
            ]
            \addplot3[blue, quiver={u={1/length(x,y)}, v={f(x,y)/length(x,y)}, scale arrows=result}, -stealth, samples=14] {0};
        \end{axis}
    \end{tikzpicture}% Extra \else. ...e arrows=result}, -stealth, samples=14] {0};
    
\end{document}

在这里我定义了我的函数并尝试在箭筒图中使用它们。但是,我得到了以下无用的错误

! Extra \else.
\pgfmath@local@next ...@local@function@body \else
                                                  \if #1(\let \pgfmath@local...

l.32 ...e arrows=length}, -stealth, samples=14] {0};

我看不出代码有什么问题。我试过了,但没有成功

  • 将标志更改/=为其他可能的替代方案,例如!=
  • 使用文字插入函数调用

我能得到一些帮助吗?

答案1

在您的原始代码中,您忘记了;定义末尾的result。您收到Could not parse input 'result' as a floating point number, ...错误表明 给出的参数scale arrows未解析为数字,因此该函数被解释。我不知道这是错误还是设计使然。一种可能的解决方法是使用\pgfmathsetmacro解析result并保存到宏,如下例所示。

\documentclass{article} % don't use minimal https://tex.stackexchange.com/questions/42114
\usepackage{pgfplots} % loads tikz

\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            declare function={
                f(\x,\y) = (\y != 0) * (2*\x/\y);
                length(\x,\y) = sqrt(1+(2*\x/\y)^2);
                result = (6 +0.5)/14;
            },
            domain=-0.5:6, 
            view={0}{90},
            axis lines=center
            ]
            % make an intermediate macro for "result"
            \pgfmathsetmacro{\tmpres}{result}

            % and use \tmpres for "scale arrows"
            \addplot3[blue, quiver={u={1/length(x,y)}, v={f(x,y)/length(x,y)}, scale arrows=\tmpres}, -stealth, samples=14] {0};
        \end{axis}
    \end{tikzpicture}    
\end{document}

在此处输入图片描述

相关内容