使用 pgfplots 在 3D 中绘制半圆

使用 pgfplots 在 3D 中绘制半圆

我正在尝试绘制一个圆环图,其表面上画有一个半圆。以下 MWE

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[hide axis,
        axis equal,
        view={-37.5}{30}]
            \addplot3[surf,
            shader=interp,
            samples=20,
            domain=0:2*pi,y domain=-pi:pi,
            z buffer=sort]
            ({(1+0.25*cos(deg(x)))*cos(deg(y))}, 
             {(1+0.25*cos(deg(x)))*sin(deg(y))}, 
             {0.25*sin(deg(x))});

            \addplot3[color=black,
            samples=20,
            domain=0:pi,
            line width=2.0pt]
            ({cos(deg(x))}, 
             {sin(deg(x))}, 
             {0.25});
    \end{axis}
\end{tikzpicture}
\end{document}

生成

圆环

这显示了问题:半圆闭合了。我对此不是特别熟悉pgfplots(上面的大部分内容都是我从使用 Matlab 脚本生成的示例和图表中学到的matlab2tikz)。有没有一种简单的方法可以得到我想要的未闭合的半圆?


刚刚做了一个快速测试:以下代码

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[hide axis,
        axis equal]
            \addplot[color=black,
            samples=20,
            domain=0:pi,
            line width=2.0pt]
            ({cos(deg(x))}, 
             {sin(deg(x))});
    \end{axis}
\end{tikzpicture}
\end{document}

表明该问题不会发生在二维图中:

半圆2D

答案1

您可以使用以下方法修复此问题

 \addplot3[color=black,
        samples=20,
        domain=0:pi,
        line width=2.0pt,samples y=0]

因此该addplot3命令只绘制曲线,而不是曲面。

截屏

更多详细信息请参阅Section 4.6.9: Parameterized plots文档pgfplots

相关内容