如何在 pgfplots 中绘制补丁的轮廓?

如何在 pgfplots 中绘制补丁的轮廓?

在 pgfplots 中,patch plot 库允许轻松绘制 3D 贝塞尔平面。如果平面的确切数学形式未知或不重要,这将非常有用。我还没有弄清楚如何另外绘制这种面片的轮廓。原则上,该mesh选项允许绘制所有线条,但这也会绘制“内部”线条。

我尝试将两者叠加在一起进行绘制,但如果平面稍微透明且看起来不对,则绘制会失败。有什么方法可以解决这个问题吗?

我的 MWE 如下所示

\documentclass[tikz]{standalone}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.7} 
\usepgfplotslibrary{patchplots}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[colorbar,xmin=0,xmax=2,ymin=-2,ymax=2,zmin=0,zmax=1,
    xlabel={x}, ylabel={y}, zlabel={z},
    view={45}{45},
    ]
\addplot3[patch,
            shader=flat,
            mesh,
            draw,
            black,
            line width=1.5pt,
            patch type=triangle quadr,
            patch refines={2},
            ]
                coordinates { (0,0,0) (0,0,1) (2,0,0) (0,0,0.5) (1,0.3,0.75) (0.5,0,0) };

\addplot3[  patch,
            shader=flat,
            patch type=triangle quadr,
            opacity=0.8,
            patch refines={2},
            ]
            coordinates { (0,0,0) (0,0,1) (2,0,0) (0,0,0.5) (1,0.3,0.75) (0.5,0,0) };
    \end{axis}
\end{tikzpicture}

\end{document}

并且实际上不起作用的输出除了补丁的轮廓之外还绘制了内部线条:

在此处输入图片描述

答案1

对于您的简单示例,patch refines=0网格图解决了该问题。

通常,可以从 和 中选择一个可用的着色器shader=facetedshader=faceted interp这些着色器会激活所有面片轮廓。其他着色器不显示面片轮廓。

您可能还对手册中“5.6 Patchplots Library”部分中的“Drawing Grids”小节感兴趣 - 它解释了补丁轮廓的可用选项以及当前的限制。

相关内容