![使用 Tikz 绘制三维表面图,重叠](https://linux22.com/image/425777/%E4%BD%BF%E7%94%A8%20Tikz%20%E7%BB%98%E5%88%B6%E4%B8%89%E7%BB%B4%E8%A1%A8%E9%9D%A2%E5%9B%BE%EF%BC%8C%E9%87%8D%E5%8F%A0.png)
我正在寻找有关如何修复以下问题的提示或帮助:
我正在尝试获取球体部分参数化的美观 3D 曲面图。这是它的 MWE:
\documentclass[crop,tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view = {30}{30}, % I already tried different angles for the first value like 30,60,150,210,300, the picture changes, but there's always the same issue
width=10cm,
height=10cm,
xmin=-1,
xmax=1,
ymin=-1,
ymax=1,
zmin=0,
zmax=1.5,
grid=major,
xlabel=$x$,
ylabel=$y$,
zlabel=$z$,
]
\addplot3 [
colormap/viridis,
domain=1/6*pi:1/2*pi, %I already tried the domain defined in reverse, or defined like on wikipedia from 0 to 1/3*pi, and the result did change, but it didn't fix the issue
y domain=3/6*pi:15/6*pi, %I already tried so many different angles here, starting at anything in between 0 and 2*pi and doing one full rotation. The picture changes but I can't seem to get rid of the issue
surf,
shader=interp,
samples=40,
opacity=1.0, %Ideally I want opacity=0.9 but even with opacity=1.0 or commenting out this line the issue persists
] (
{1*cos(deg(x))*cos(deg(y))},
{1*cos(deg(x))*sin(deg(y))},
{1*sin(deg(x))}
);
\end{axis}
\end{tikzpicture}
\end{document}
不幸的是,表面背面似乎有一些奇怪的透明部分,这让它看起来非常尴尬。有人知道如何摆脱它吗?我将已经尝试过的内容写入代码(使用注释),但似乎无法使其工作。为了方便阅读,以下是我尝试过的内容的列表:
- 已经尝试了不同的视角,如 30、60、150、210、300,图片发生了变化,但总是存在相同的问题
- 我已经尝试过反向定义 theta 域(此处为 x),或者像维基百科上那样从 0 到 1/3*pi 进行定义,结果确实发生了变化,但并没有解决问题
- 我已经尝试了很多不同的 phi 域角度(此处为 y),从 0 到 2*pi 之间的任意位置开始,然后进行一次完整的旋转。图片发生了变化,但我似乎无法摆脱这个问题
- 理想情况下,我希望 opacity=0.9,但即使 opacity=1.0 或注释掉此行,问题仍然存在
我会很感激任何帮助。谢谢!
答案1
我遇到了完全相同的问题。对我有帮助的是添加z buffer = sort
到axis
环境中。
例如
\begin{axis}[z buffer = sort]
% Some code...
\end{axis}
我对 LaTeX 还很陌生,所以我无法解释为什么这有效,但我希望它无论如何都能帮助你!:)