我正在尝试使用 PGFplots 绘制一个漂亮的三维图。它的 Z 轴应该是对数的。不幸的是,当值太小的时候,精度不足以得到平滑的曲线。希望这个 MWE 没问题……
谢谢你的提示。
\documentclass[a4paper,11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{ngerman}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={140}{20},
grid=major,
%
xlabel style={sloped},
xlabel={Bildschirmdiagonale $h$},
x dir=reverse,
%
ylabel style={sloped},
ylabel={Entfernung $d$},
%
zlabel={Raumwinkel $\Omega$},
zmode=log,
]
\addplot3[
mesh,
domain=20:60,
y domain=2:20,
] { 4*pi/180*atan( ((12*x)*(22*x)) / (2*1000*y*sqrt(4*(1000*y)^2+(22*x)^2+(12*x)^2)) ) };
\end{axis}
\end{tikzpicture}
\end{document}
答案1
有时,分析表达式会有所帮助。我所做的就是将分子和分母除以 10,这样(1000*y)^2
平方根中的 就变成了(100*y)^2
。这得到
\documentclass[a4paper,11pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={140}{20},
grid=major,
%
xlabel style={sloped},
xlabel={Bildschirmdiagonale $h$},
x dir=reverse,
%
ylabel style={sloped},
ylabel={Entfernung $d$},
%
zlabel={Raumwinkel $\Omega$},
zmode=log,
]
\addplot3[
mesh,
domain=20:60,
y domain=2:20,
] {0.1* 4*pi/180*atan( ((12*x)*(22*x)) /
(2*1000*y*sqrt(4*(100*y)^2+(2.2*x)^2+(1.2*x)^2)) ) };
\end{axis}
\end{tikzpicture}
\end{document}
如您所见,波动消失了。您可以继续使用,直到对结果满意为止。