自学内容网 自学内容网

MATLAB绘图:5.三维图形

三维图形

基本的三维绘图包括:

  • 线型(Line)
  • 网格型(Mesh)
  • 区域型(Area)
  • 面型(Surface)
  • 方向矢量型(Direction)
  • 容积型(Volumetric)

一.三维曲线图-plot3函数

  1. plot3(x,y,z)

    • 绘制三维空间中的坐标
    • 要绘制由线段连接的一组坐标,将x,y,z指定为相同长度的向量
    • 要在同一组坐标轴上绘制多组坐标,将x,y,z中的至少一个指定为矩阵,其他指定为向量
  2. plot3(x,y,z,LineSpec)

    • 指定使用的线型、标记和颜色绘图
  3. plot3(x1,y1,z1,LineSpec1,……,xn,yn,zn,LineSpecn)

    • 可以为每个三元组坐标指定特定的线型、标记和颜色。也可省略某些三元组的linespec参数

例子:

t=0:0.01:2*pi;
x1=sin(t).*cos(10*t);
y1=sin(t).*sin(10*t);
z1=cos(t);

x2=sin(t).*cos(12*t);
y2=sin(t).*sin(12*t);
z2=cos(t);
plot3(x1,y1,z1,'r-o','LineWidth',2)
plot3(x2,y2,z2,'g-s','LineWidth',2)
plot3(x1,y1,z1,x2,y2,z2,'b--')
axis equal

二.三维曲面图-surf、mesh函数

生成网络点阵
x-y平面内的点阵-----计算各个(x,y)坐标对应的z坐标

栅格数据的生成

[x,y]=meshgrid(x,y)

  • 基于向量x和y中包含的坐标返回二维网格坐标。x是一个矩阵,每一行是x的一个副本;y也是一个矩阵,每一列是y的一个副本。坐标x和y表示的网格有length(x)个列*length(y)个行。

[x,y]=meshgrid(x)

  • 等价于meshgrid(x,x),返回网格大小为length(x)*length(x)的方形网格坐标。

[x,y,z]=meshgrid(x,y,z)

[x,y,z]=meshgrid(x)

示例:

x=1:3;%生成1~3的向量(当作行向量)
y=1:4;%生成1~4的向量(当作列向量)
[x,y]=meshgrid(x,y)
%x和y变成矩阵,大小为x的行,y的列,不够的直接复制
网格曲面图–mesh
  1. mesh(x,y,z)

    • 创建一个网格图,该网格图为三维曲面,有实色边颜色,无面颜色
    • 该函数将矩阵z中值绘制为由x和y定义的x-y平面中的网格上方的高度。边颜色因z指定的高度而异
  2. mesh(z)

    • 创建一个网格图,并将z中元素的列索引和行索引作为x和y坐标。
  3. mesh(z,c)

    • 进一步指定边的颜色
  4. s=mesh(__)

    • 将返回一个图曲面对象。在创建网格后,使用s修改网格图。有关属性列表,可参阅Surface属性

例子:

[x,y]=meshgrid(-8:.5:8);
R=sqrt(x.^2+y.^2)+eps;
%z确定高度
Z=sin(R)./R;
mesh(x,y,Z);
colorbar
%c指定颜色
C=x.*y;
mesh(x,y,Z,C)
colorbar
%指定值为0.5的FaceAlpha名称-值对组,以创建半透明网格曲面。
%要允许进一步修改,要将曲面对象赋值给变量s
[x,y]=meshgrid(-5:.5:5);
Z=y.*sin(x)-x.*cos(y);
s=mesh(x,y,Z,'FaceAlpha',0.5)
%设置facecolor属性
s.FaceColor='r';
三维曲面图–surf
  1. surf(x,y,z)

    • 创建一个三维曲面图,它是一个具有实色边和实色面的三维曲面
    • 该函数将矩阵z中的值绘制为由x和y定义的x-y平面中的网格上方的高度。曲面的颜色根据z指定的高度而变化
  2. surf(x,y,z,c)

    • 还指定曲面的颜色
  3. surf(z)

    • 创建一个三维曲面图,并将z中元素的列索引和行索引作为x和y坐标。
  4. s=surf(__)

    • 将返回一个图曲面对象。在创建曲面后,使用s修改曲面。有关属性列表,可参阅Surface属性

例子:

[x,y]=meshgrid(1:0.5:10,1:20);
z=sin(x)+cos(y);
surf(x,y,z)
colorbar
%
c=x.*y;
surf(x,y,z,c)
colorbar

[x,y]=meshgrid(-5:.5:5);
z=y.*sin(x)-x.*cos(y);
s=surf(x,y,z,'FaceAlpha',0.5)
s.EdgeColor='none';
s.FaceColor='interp';

三.等高线图

  1. contour(x,y,z)

    • 指定z中各值的x和y坐标,绘制等高线图
  2. contour(__,levels)

    • 将levels指定为标量值n,以在n个自动选择的层级(高度)上显示等高线。要在某些特定高度绘制等高线,请将levels指定为单调递增值的向量。要在一个高度(k)绘制等高线,请将levels指定为二元素向量[k,k]。
  3. contour(__,LineSpec)

    • 指定使用的线型、标记和颜色绘图
  4. [M,c]=contour(__)

    • 返回一个等高线矩阵M,其中M(i,j)是第i行,第j列上的等高线。c是等高线对象。显示等高线后,使用c设置属性

例子:

[x,y,z]=peaks;
%peaks是从高斯分布转换和缩放得来的包含两个变量的函数,默认返回49*49的矩阵
surf(x,y,z)
%绘制等高线
contour(x,y,z,20)
contour3(x,y,z,20)
等高线图增加方向矢量和速度矢量
  1. quiver(x,y,u,v)

    • 绘制一个箭头,其长度由u和v指定,其位置由x和y指定。
    • 矩阵x、y、u、v必须有相同的行数和列数并包含对应的位置和速度分量。
    • x、y还可以是向量

例子:

[x,y]=meshgrid(-2:.2:2);
z=x.*exp(-x.^2-y.^2);
[U,V]=gradient(z,.2,.2);
figure
contour(x,y,z)
hold on
quiver(x,y,U,V)
hold off

其他图表

  • 热图heatmap
  • 文字云图wordcloud

三维图形的高级设置

  • 视点控制:view
  • 颜色:colormap
  • 光照控制
    • camlight:设置并移动关于摄像头的光源
    • lightangle:在球坐标系下设置或定位一个光源
    • light:设置光源
    • lighting:选择光源模式
    • material:设置图形表面对光照的反应模式

原文地址:https://blog.csdn.net/m0_75029367/article/details/142310611

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!