如何使用叠加层隐藏投影仪演示文稿中 addplot3 后面不可见的部分

如何使用叠加层隐藏投影仪演示文稿中 addplot3 后面不可见的部分

我使用带有叠加层的 beamer 演示文稿通过 addplot3 显示 3D 图(参见 MWE)。在第二张幻灯片中绘制了带有标记的虚线。在第三张幻灯片中绘制了一个表面,从观察者的角度来看不可见的虚线部分被隐藏,但坐标 (4,4,0) 处的标记不会发生这种情况,该标记也应该对观察者隐藏。我该如何解决这个问题?我希望从观察者的角度来看不可见的所有对象都隐藏在表面后面。我尝试将表面的不透明度设置为 1,但没有任何反应。

\documentclass[]{beamer}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{frame}

   \begin{tikzpicture}[scale=.75]
   \begin{axis}[
        clip=false,
        xmax=20,ymax=20,zmax=20,xmin=0,ymin=0,zmin=0,
        grid=both,
        view/h=45,
        small,]
   \only<2->{\addplot3[dashed, color=red,mark=*,mark size=1.5pt,mark options={color=red,draw=red,fill=red}] coordinates{ (4,0,0) (4,4,0) (20,4,0) };}
   \only<3->{\addplot3[surf,samples=20,domain=0:20, y domain=0:20,opacity=1]{x^(0.5) * y^(0.5)};}
   \end{axis}
   \end{tikzpicture}
\end{frame}
\end{document}

答案1

默认情况下,标记位于特殊图层上。一种选择是使用mark layer=like plot(并将图放在适当的图层上),如下所示

\documentclass[]{beamer}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{frame}
\frametitle{Mark layers can be tricky}
\begin{tikzpicture}[scale=.75]
   \begin{axis}[
        clip=false,
        xmax=20,ymax=20,zmax=20,xmin=0,ymin=0,zmin=0,
        grid=both,
        view/h=45,
        small,small,set layers,
        mark layer=like plot]
   \begin{pgfonlayer}{pre main}         
   \only<2->{\addplot3[dashed, color=red,mark=*,mark size=1.5pt,mark options={color=red,draw=red,fill=red}] coordinates{ (4,0,0) (4,4,0) (20,4,0) };}
   \end{pgfonlayer}
   \only<3->{\addplot3[surf,samples=20,domain=0:20, y domain=0:20,opacity=1]{x^(0.5) * y^(0.5)};}
   \end{axis}
\end{tikzpicture}
\end{frame}
\end{document}

在此处输入图片描述

相关内容