使用 Tikz 绘制三维表面图,重叠

使用 Tikz 绘制三维表面图,重叠

我正在寻找有关如何修复以下问题的提示或帮助:

我正在尝试获取球体部分参数化的美观 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}

其结果如下:3D 表面图上奇怪的背面透视

不幸的是,表面背面似乎有一些奇怪的透明部分,这让它看起来非常尴尬。有人知道如何摆脱它吗?我将已经尝试过的内容写入代码(使用注释),但似乎无法使其工作。为了方便阅读,以下是我尝试过的内容的列表:

  1. 已经尝试了不同的视角,如 30、60、150、210、300,图片发生了变化,但总是存在相同的问题
  2. 我已经尝试过反向定义 theta 域(此处为 x),或者像维基百科上那样从 0 到 1/3*pi 进行定义,结果确实发生了变化,但并没有解决问题
  3. 我已经尝试了很多不同的 phi 域角度(此处为 y),从 0 到 2*pi 之间的任意位置开始,然后进行一次完整的旋转。图片发生了变化,但我似乎无法摆脱这个问题
  4. 理想情况下,我希望 opacity=0.9,但即使 opacity=1.0 或注释掉此行,问题仍然存在

我会很感激任何帮助。谢谢!

答案1

我遇到了完全相同的问题。对我有帮助的是添加z buffer = sortaxis环境中。

例如

\begin{axis}[z buffer = sort]
    % Some code...
\end{axis}

我对 LaTeX 还很陌生,所以我无法解释为什么这有效,但我希望它无论如何都能帮助你!:)

相关内容