Tikz:用特定颜色填充由方程定义的平面

Tikz:用特定颜色填充由方程定义的平面

我正在尝试使用 \addplot3 绘制平面及其方程。当我想用颜色填充平面时,问题就开始出现了。我想用颜色填充它们,就像我通过一组坐标定义平面时能够做到的那样。这是我的代码:

\begin{figure}
\centering
\begin{tikzpicture}[scale=2.5]
\begin{axis}[
title={Intersecting planes}, 
xlabel=$x$, ylabel=$y$, zlabel = $z$,zlabel style={rotate=-90},
small,
]


\addplot3[
fill=blue,
domain=-5:5,
domain y=-5:5,
] {x + 2*y -1};

\end{axis}

\end{tikzpicture}
\caption{Caption}
\label{fig:my_label}
\end{figure}

然后输出

我如何编辑代码以使飞机变成纯蓝色?

在此处输入图片描述

答案1

\documentclass[border=1 cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel=$x$, ylabel=$y$, zlabel = $z$,
]
\addplot3[
surf, shader=flat,
blue,
domain=-5:5,
domain y=-5:5,
samples=2,
] {x + 2*y -1};
\end{axis}
\end{tikzpicture}
\end{document}

蓝色表面图

-或与fill其他draw颜色搭配:

\documentclass[border=1 cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel=$x$, ylabel=$y$, zlabel = $z$,
]
\addplot3[
surf, shader=flat,
fill=blue, draw=orange,
domain=-5:5,
domain y=-5:5,
samples =10,
] {x + 2*y -1};
\end{axis}
\end{tikzpicture}
\end{document}

带橙色网格的蓝色表面

答案2

fill=blue只是不是正确的键。请注意,除非您使用类似的键,否则axis equal不同的轴将经历不同的缩放。还要注意,对于相交的平面,您可能需要过渡到patch plots。这只是为了表明,当您拨打正确的键时,您会得到一个蓝色的平面。(它是蓝色是一个意外,因为颜色图恰好在这里给出了它,但当然可以安装任何想要的颜色。)

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[scale=2.5]
\begin{axis}[
title={Intersecting planes}, 
xlabel=$x$, ylabel=$y$, zlabel = $z$,zlabel style={rotate=-90},
small,
]


\addplot3[surf,point meta=0,shader=interp,
domain=-5:5,
domain y=-5:5,
] {x + 2*y -1};

\end{axis}

\end{tikzpicture}
\caption{Caption}
\label{fig:my_label}
\end{figure}
\end{document}

在此处输入图片描述

答案3

这是一种渐近线方法。运行http://asymptote.ualberta.ca/ PS:我在 Asymptote 中控制光线时不太舒服。

在此处输入图片描述

// the plane z = x + 2 y - 1 
unitsize(1cm,1cm,3mm);
import graph3;
currentprojection=orthographic(2,1,2,zoom=.9,center=true);
currentlight=light(5,5,16);
pair A=(-5,-5), B=(5,5);
real f(pair M){return M.x+2*M.y-1;}
surface s=surface(f,A,B);
pen p=blue+opacity(.5);
draw(s,p);

xaxis3("$x$",Bounds,purple,InTicks);
yaxis3("$y$",Bounds,purple,InTicks);
zaxis3("$z$",Bounds,purple,InTicks);

dot("$O$",align=N,O,red);

相关内容