绘制尊重图层的正方形 pgfplots

绘制尊重图层的正方形 pgfplots

我有一个pgfplots代码,可以在圆的顶部生成抛物面;

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
 \begin{axis}[view={30}{60}]

 \addplot [fill=black, domain=0:2*pi,samples=50]({cos(deg(x))},     {sin(deg(x))});
  \addplot3[surf,shader=flat,
 samples=20,
  domain=0:2,y domain=0:2*pi,
  z buffer=sort]
  ({x*cos(deg(y))}, {x*sin(deg(y))}, {x*x});

 \end{axis}
\end{tikzpicture}
\end{document}

看起来像

在此处输入图片描述

这几乎就是我想要的。我想在平面上围绕圆绘制一个正方形z=0并能够填充它(但不覆盖圆),但我不知道如何做到这一点。

我尝试添加行

 \addplot (-2,2) rectangle (-2,2);

但是生成的矩形位于错误的平面上,并且也没有跨越点(-2,-2)(2,2)正如我预期的那样。

麦克风

答案1

您可以使用合适的坐标和绘图。

\addplot+[draw=none,no marks,fill=olive] coordinates{(-2,-2) (2,-2) (2,2) (-2,2)};

在绘制其他两行之前,先将此行作为第一行。

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
 \begin{axis}[view={30}{60}]     
 \addplot+[draw=none,no marks,fill=olive] coordinates{(-2,-2) (2,-2) (2,2) (-2,2)};      %%<<-- this should come first.
 \addplot [fill=black, domain=0:2*pi,samples=50]({cos(deg(x))},     {sin(deg(x))});
  \addplot3[surf,shader=flat,
 samples=20,
  domain=0:2,y domain=0:2*pi,
  z buffer=sort]
  ({x*cos(deg(y))}, {x*sin(deg(y))}, {x*x});

 \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容