我有以下图表,以是和是,我正尝试使用 进行绘图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}