在 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=faceted
。shader=faceted interp
这些着色器会激活所有面片轮廓。其他着色器不显示面片轮廓。
您可能还对手册中“5.6 Patchplots Library”部分中的“Drawing Grids”小节感兴趣 - 它解释了补丁轮廓的可用选项以及当前的限制。