我有一个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}