PGFplots \addplot3 内联表中的计算

PGFplots \addplot3 内联表中的计算

使用代码绘制矩形面片

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}
            \addplot3[patch,patch type=rectangle,table/row sep=\\,patch table={0 1 2 3\\}] table[row sep=\\]
            {%
                x y z \\
                0 0 0 \\ % 0
                -1 -1 0 \\ % 1
                -1 -1 1 \\ % 2
                0 0 1 \\ % 3
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

工作正常,但是

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}
            \addplot3[patch,patch type=rectangle,table/row sep=\\,patch table={0 1 2 3\\}] table[row sep=\\]
            {%
                x y z \\
                0 0 0 \\ % 0
                -1/sqrt(3) -1 0 \\ % 1 % USE OF SQRT!
                -1/sqrt(3) -1 1 \\ % 2 % USE OF SQRT!
                0 0 1 \\ % 3
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

给出错误

! Package PGF Math Error: Could not parse input '-1/sqrt(3)' as a floating point number, sorry. The unreadable part was near '/sqrt(3)'..

我应该如何修改代码,使得类似的数学函数sqrt(...)可以PGFplots在内联中使用table并且不会产生错误?

答案1

TikZ 正常运行一切通过 \pgfmathparse,但这里不是这种情况。您必须对其进行预格式化。

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}

\pgfmathparse{-1/sqrt(3)}
\let\tempx=\pgfmathresult

    \begin{tikzpicture}
        \begin{axis}
            \addplot3[patch,patch type=rectangle,table/row sep=\\,patch table={0 1 2 3\\}] table[row sep=\\]
            {%
                x y z \\
                0 0 0 \\ % 0
                {\tempx} -1 0 \\ % 1 % USE OF SQRT!
                {\tempx} -1 1 \\ % 2 % USE OF SQRT!
                0 0 1 \\ % 3
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

相关内容