以 y 和 z 为单位绘制函数,pgfplots 浮点错误

以 y 和 z 为单位绘制函数,pgfplots 浮点错误

我有以下图表,以,我正尝试使用 进行绘图pgfplots。执行此操作时,它给出了“无法解析为浮点数”错误。

\documentclass[letterpage,12pt]{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\pgfplotsset{colormap={grays}{gray(0cm)=(0.5);gray(1cm)=(0)}}

\begin{document}

\begin{figure}[h]
    \begin{center}
        \begin{tikzpicture}
            \begin{axis}[%
                width=\textwidth,
                height=4in
                ]
                \addplot3[
                mesh,
                samples=21,
                restrict y to domain=-8:8,
                restrict z to domain=0:10
                ]
                {3*1000*5^2*z/(2*3.1415*(5^2+y^2+z^2)^2.5)};
                \addlegendentry{$q_x$}
            \end{axis}
        \end{tikzpicture}
    \end{center}
\end{figure}

\end{document}

我在网上搜索后认为这可能是一个连续性问题,但我认为这里不是这种情况(没有办法除以零,并且绘图值应该随着增加)。除此之外,错误日志没有给我提供太多信息。

该图看起来应该类似于下图,它是在 Mathcad 中生成的。关于如何绘制该图,您有什么想法吗?

绘图示例

答案1

最终答案,感谢@Jake 的帮助:

\documentclass[border=10pt]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
%\pgfplotsset{colormap={grays}{gray(0cm)=(0.5);gray(1cm)=(0)}}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[%
        width=\textwidth,
        height=4in,
        %view = {25}{-20},
        axis equal image, 
        ylabel = Lateral Distance ($y$),
        ylabel style = sloped,
        zlabel = Depth ($z$),
        z buffer = sort, 
        ]
        \addplot3[
            surf,  %shader=interp,
            samples=21,
            domain = -8:8, y domain = 0:10, 
            point meta = x, 
            % restrict y to domain=-8:8,
            % restrict z to domain=0:10
            ] 
            (3*1000*5^2*y/(2*3.1415*(5^2+x^2+y^2)^2.5), x, y);
        \addlegendentry{$q_x$}
     \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

先前的部分答案

我没有时间深入研究手册,但正常的 3dplots 是像 af(x,y) 那样制作的。因此,如果您使用:

\begin{axis}[%
            width=\textwidth,
            height=4in
            ]
            \addplot3[
            mesh,
            samples=21,
            domain = -8:8, y domain = 0:10, 
            % restrict y to domain=-8:8,
            % restrict z to domain=0:10
            ]
            {3*1000*5^2*y/(2*3.1415*(5^2+x^2+y^2)^2.5)};
            \addlegendentry{$q_x$}
        \end{axis}

你将得到如下输出:

在此处输入图片描述

请注意,x、z、y 是简单的占位符,因此您可以根据自己的喜好命名图中的事物。例如,经过一些操作,并且感谢 @Jake 的评论,您可以得到类似这样的结果

在此处输入图片描述

代码:

\documentclass[border=10pt]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
%\pgfplotsset{colormap={grays}{gray(0cm)=(0.5);gray(1cm)=(0)}}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[%
        width=\textwidth,
        height=4in,
        view = {25}{-20},
        ylabel = Lateral Distance ($y$),
        zlabel = Depth ($z$),
        ]
        \addplot3[
            surf,  %shader=interp,
            samples=21,
            domain = -8:8, y domain = 0:10, 
            point meta = x, 
            axis equal image, 
            % restrict y to domain=-8:8,
            % restrict z to domain=0:10
            ] 
            (3*1000*5^2*y/(2*3.1415*(5^2+x^2+y^2)^2.5), x, y);
        \addlegendentry{$q_x$}
     \end{axis}
\end{tikzpicture}
\end{document}

答案2

如果您在 MWE 中将每个 y,z 替换为 x,y,它就可以正常工作。

\documentclass[letterpage,12pt]{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\pgfplotsset{colormap={grays}{gray(0cm)=(0.5);gray(1cm)=(0)}}

\begin{document}

\begin{figure}[h]
    \begin{center}
        \begin{tikzpicture}
            \begin{axis}[%
                width=\textwidth,
                height=4in
                ]
                \addplot3[
                mesh,
                samples=21,
                restrict x to domain=-8:8,
                restrict y to domain=0:10
                ]
                {3*1000*5^2*y/(2*3.1415*(5^2+x^2+y^2)^2.5)};
                \addlegendentry{$q_x$}
            \end{axis}
        \end{tikzpicture}
    \end{center}
\end{figure}

\end{document}

图形

相关内容