第3章绘图与可视化讲述_第1页
第3章绘图与可视化讲述_第2页
第3章绘图与可视化讲述_第3页
第3章绘图与可视化讲述_第4页
第3章绘图与可视化讲述_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MATLAB绘图与可视化天 津 科 技 大 学 数 学 系 谢中华E-mail: MATLAB从零到进阶从零到进阶MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MATLAB设有大量函数和命令来绘制出各种各样的图形,具设有大量函数和命令来绘制出各种各样的图形,具有强大的绘图功能有强大的绘图功能MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 20

2、22-3-17主要内容主要内容 图形对象与图形句柄图形对象与图形句柄 二维图形绘制二维图形绘制 三维图形绘制三维图形绘制 图形的打印和输出图形的打印和输出 动画制作动画制作MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17第一节第一节 图形对象与图形对象句柄图形对象与图形对象句柄MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17一、什么是图形对象与图形句柄一、什么是图形对象与图形句柄 图形窗口、线条、曲面和注释等都被看作是图形窗口、线条、曲面和注释等都被看作是MATLAB中中的图形对象的图形对象,所有这些图形对

3、象都可以通过一个被称为,所有这些图形对象都可以通过一个被称为“句句柄值柄值”的东西加以控制,例如可以通过一个线条的句柄值来的东西加以控制,例如可以通过一个线条的句柄值来修改线条的颜色、宽度和线型等属性。修改线条的颜色、宽度和线型等属性。这里所谓的这里所谓的“句柄值句柄值”其实就是一个数值,每个图形对象都对应一个唯一的句柄值,其实就是一个数值,每个图形对象都对应一个唯一的句柄值,它就像一个指针,与图形对象一一对应它就像一个指针,与图形对象一一对应。例如可以通过命令。例如可以通过命令h = figure返回一个图形窗口的句柄值。返回一个图形窗口的句柄值。MATLAB绘图绘图 谢中华谢中华, MAT

4、LAB从零到进阶从零到进阶. 2022-3-17句柄式图形对象继承关系图句柄式图形对象继承关系图Parent(父)(父)Children(子)(子)MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17二、获取图形对象属性名称和属性值二、获取图形对象属性名称和属性值 h = line(0 1,0 1)h = 0.0149 get(h)MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17三、设置图形对象属性值三、设置图形对象属性值 subplot(1, 2, 1); h1 = line(0 1,0 1) ; text(

5、0, 0.5, 未改变线宽未改变线宽) ; subplot(1, 2, 2); h2 = line(0 1,0 1) ; set(h2, LineWidth, 3) text(0, 0.5, 已改变线宽已改变线宽) ; MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17第二节第二节 二维图形绘制二维图形绘制MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17一、基本二维绘图函数一、基本二维绘图函数 MATLAB 中提供了中提供了plot,loglog,semilogx,semilogy,polar,plotyy

6、等等6个非常实用的基本二维绘图函数,下面重个非常实用的基本二维绘图函数,下面重点介绍点介绍plot函数的用法函数的用法MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-171. plot函数函数plot(Y)plot(X,Y)plot(X1,Y1, X2,Y2,.)plot(X1,Y1,LineSpec,.)plot(.,PropertyName,PropertyValue,.)plot(axes_handle,.)h = plot(.)hlines = plot(v6,.) 调用格式:调用格式:MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶

7、从零到进阶. 2022-3-17【例例3.2-0】给定横纵坐标数据,绘制线图给定横纵坐标数据,绘制线图xy123577.586.5775.5468102 x=1 1.5 2 3 5 7 7.5 8 10; y=2 5 6.5 7 7 5.5 4 6 8; plot(x,y)1.55123456789102345678MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17【例例3.2-1】同时绘制多条线同时绘制多条线 x=3,5,9;3,10,67;3,23,90;x = 3 5 9 3 10 67 3 23 90 plot(x)11.21.41.61.82

8、2.22.42.62.830102030405060708090第一列第二列第三列MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 x1=linspace(0,2*pi,100); x2=linspace(0,3*pi,100); x3=linspace(0,4*pi,100); y1=sin(x1); y2=1+sin(x2); y3=2+sin(x3); x=x1;x2;x3; y=y1;y2;y3; plot(x,y,x1,y1-1,r-*)02468101214-2-1.5-1-0.500.511.522.53x1,y1-1x,y三列三列MA

9、TLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17线型、描点类型、颜色参数表线型、描点类型、颜色参数表 线条属性的修改线条属性的修改色彩色彩字符字符说明说明线型线型字符字符说明说明描点描点类型类型说明说明描点描点类型类型说明说明r红红-实线(默认)实线(默认).点点右三角形右三角形MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17【例例3.2-2】画标准正态分布的密度函数图像。画标准正态分布的密度函数图像。 x = -3 : 0.25 : 3; y = normpdf(x, 0, 1); plot(x, y, -r

10、o,. LineWidth,2,. MarkerEdgeColor,k,. MarkerFaceColor,0.49, 1, 0.63,. MarkerSize,12) xlabel(X); ylabel(Y); MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17-3-2-1012300.050.10.150.20.250.30.350.4XYMATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-172. loglog函数:双对数坐标绘图函数:双对数坐标绘图 x = logspace(-1,2); loglog(x,e

11、xp(x),-s) grid on% 为为X轴,轴,Y轴加标签轴加标签 xlabel(X); ylabel(Y); MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-173. semilogx,semilogy函数:半对数坐标绘图函数:半对数坐标绘图 x = 0 : 0.1 : 10; semilogy(x, 10.x) xlabel(X); ylabel(Y);MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-174. polar函数:极坐标绘图函数:极坐标绘图 t = 0 : 0.01 : 2*pi; polar(

12、t, sin(2*t).*cos(2*t),-r)MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-175. plotyy函数:双纵坐标绘图函数:双纵坐标绘图 x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); ax = plotyy(x,y1,x,y2,plot); xlabel(X); set(get(ax(1),Ylabel),string,Left Y); set(get(ax(2),Ylabel),string,Right Y); MATLA

13、B绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17双纵坐标绘图双纵坐标绘图MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17二、二维图形修饰和添加注释二、二维图形修饰和添加注释 可以通过可以通过MATLAB命令对图形进行修饰和添加注释,也命令对图形进行修饰和添加注释,也可以通过图形窗口的菜单项和工具栏完成这些工作。后者通可以通过图形窗口的菜单项和工具栏完成这些工作。后者通过鼠标点击操作,相对比较简单,下面仅对相关命令进行介过鼠标点击操作,相对比较简单,下面仅对相关命令进行介绍绍MATLAB绘图绘图 谢中华谢中华, MAT

14、LAB从零到进阶从零到进阶. 2022-3-1781012141618202224020040060080010001200DISTANCE (cm)INTENSITY (lux)Light Intensity as a Function of DistanceComparison between theory and experiment.TheoryExperimentPlot titley axislabelx axislabelTextTick-mark label二维绘图的图例标注说明二维绘图的图例标注说明Data symbolLegendTick-markMATLAB绘图绘图 谢中

15、华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 hold 函数:开启和关闭图形窗口的图形保持功能函数:开启和关闭图形窗口的图形保持功能 axis 函数:设置坐标系的刻度和显示方式函数:设置坐标系的刻度和显示方式 grid 函数:为当前坐标系添加网格函数:为当前坐标系添加网格 title 函数:为当前坐标系添加标题函数:为当前坐标系添加标题 xlabel和和ylabel 函数:为当前坐标轴添加标签函数:为当前坐标轴添加标签 text函数:在当前坐标系中添加文本对象(函数:在当前坐标系中添加文本对象(text对象)对象) gtext函数:在当前坐标系中交互式添加文本对象函数:在

16、当前坐标系中交互式添加文本对象 legend函数:在当前坐标系中添加函数:在当前坐标系中添加line对象和对象和patch对象的对象的图形标注框图形标注框 annotation函数:在当前图形窗口建立注释对象函数:在当前图形窗口建立注释对象(annotation对象)对象)MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 P = 3 1; 1 4; r = 5; V, D = eig(P); a = sqrt(r/D(1); b = sqrt(r/D(4); t = linspace(0, 2*pi, 60); xy = V*a*cos(t); b*

17、sin(t); plot(xy(1,:),xy(2,:), k, linewidth, 3); h = annotation(textarrow,0.606 0.65,0.55 0.65);【例例3.2-3】根据椭圆方程根据椭圆方程 绘制椭圆曲线,绘制椭圆曲线,并修饰图形。并修饰图形。31514xxyyMATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 set(h, string,3x2+2xy+4y2 = 5, fontsize, 15); h = title(这是一个椭圆曲线这是一个椭圆曲线, fontsize, 18, fontweight, b

18、old); set(h, position, -0.00345622 1.35769 1.00011); axis(-1.5 1.5 -1.2 1.7); xlabel(X); ylabel(Y); MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 a = -19.6749 22.2118 5.0905; fun = (a,x)a(1)+a(2)/2*(x-0.17).2+a(3)/4*(x-0.17).4; x = 0:0.01:1; y = fun(a, x); plot(x,y); xlabel(X); ylabel(Y = f(X); tex

19、t(Interpreter,latex,.String,$-19.6749+frac22.21182(x-0.17)2. +frac5.09054(x-0.17)4$,Position,0.05, -12,.FontSize,12);【例例3.2-4】绘制曲线绘制曲线并添加曲线方程。并添加曲线方程。2422.21185.090519.6749(0.17)(0.17)24xxMATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17三、常用统计绘图函数三、常用统计绘图函数

20、常用统计绘图函数列表常用统计绘图函数列表MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 x = normrnd(0, 1, 1000, 1); hist(x, 20); xlabel(样本数据样本数据); ylabel(频数频数) ; figure; cdfplot(x); 【例例3.2-6】用用normrnd函数产生函数产生1000个标准正态分布随机数,并个标准正态分布随机数,并做出频数直方图和经验分布函数图。做出频数直方图和经验分布函数图。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17频数直方图频数

21、直方图经验分布函数图经验分布函数图MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17四、特殊二维绘图函数四、特殊二维绘图函数特殊二维绘图函数列表特殊二维绘图函数列表MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 subplot(3, 3, 1); f = (x)200*sin(x)./x; fplot(f, -20 20); title(y = 200*sin(x)/x); subplot(3, 3, 2); ezplot(x2 + y2 = 1, -1.1 1.1); axis equal; title(

22、单位圆单位圆); subplot(3, 3, 3); ezpolar(1+cos(t); title(心形图心形图); subplot(3, 3, 4); x = 10 10 20 25 35; 【例例3.2-7】特殊二维图形。特殊二维图形。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 name = 赵赵, 钱钱, 孙孙, 李李, 谢谢; explode = 0 0 0 0 1; pie(x, explode, name) title(饼图饼图); subplot(3, 3, 5); stairs(-2*pi:0.5:2*pi,sin(-2*pi

23、:0.5:2*pi); title(楼梯图楼梯图); subplot(3, 3, 6); stem(-2*pi:0.5:2*pi,sin(-2*pi:0.5:2*pi); title(火柴杆图火柴杆图); subplot(3, 3, 7); Z = eig(randn(20,20); compass(Z); title(罗盘图罗盘图);MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 subplot(3, 3, 8); theta = (-90:10:90)*pi/180; r = 2*ones(size(theta); u,v = pol2cart

24、(theta,r); feather(u,v); title(羽毛图羽毛图); subplot(3, 3, 9); t = (1/16:1/8:1)*2*pi; fill(sin(t), cos(t),r); axis square; title(八边形八边形);MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17第三节第三节 三维图形绘制三维图形绘制MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17一、常用三维绘图函数一

25、、常用三维绘图函数MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 t = linspace(0, 10*pi, 300); plot3(20*sin(t), 20*cos(t), t, r, linewidth, 2); hold on %图形保持图形保持 quiver3(0,0,0,1,0,0,25,k,filled,LineWidth,2); quiver3(0,0,0,0,1,0,25,k,filled,LineWidth,2); quiver3(0,0,0,0,0,1,40,k,filled,LineWidth,2); grid on xl

26、abel(X); ylabel(Y); zlabel(Z); axis(-25 25 -25 25 0 40); view(-210,30); 【例例3.3-1】用用plot3函数绘制三维螺旋线。函数绘制三维螺旋线。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 x,y = meshgrid(1:4, 2:5)x = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4y = 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 plot(x, y, r,x, y, r, x, y, k.,markersize,18); axi

27、s(0 5 1 6); xlabel(X); ylabel(Y); 【例例3.3-2】用用meshgrid函数生成网格矩阵,并用函数生成网格矩阵,并用plot函数画出平函数画出平面网格图形。面网格图形。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 X,Y = meshgrid(-2:.2:2); Z = X.*exp(-X.2 - Y.2); DX,DY = gradient(Z,0.2,0.2); contour(X,Y,Z) ; hold on ; quiver(X,Y,DX,DY) ; h = get(gca,Children); set(

28、h, Color,k); 【例例3.3-3】绘制三维曲面绘制三维曲面 的等高线图和梯度场。的等高线图和梯度场。22()xyzxeMATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 x = linspace(-3,3,20); y = linspace(-9,9,20); X, Y = meshgrid(x,y); Z = mvnpdf(X(:) Y(:), 0 0, 1 2;2 9); Z = reshape(Z, size(X); subplot(2, 2, 1); mesh(X, Y, Z); title(mesh); 【例例3.3-4】用用mes

29、h,surf,surfl,surfc函数绘制二元正态分布函数绘制二元正态分布的密度函数图。的密度函数图。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 subplot(2, 2, 2); surf(X, Y, Z); alpha(0.5); title(surf); subplot(2, 2, 3); surfl(X, Y, Z); title(surfl); subplot(2, 2, 4); surfc(X, Y, Z); title(surfc);MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MA

30、TLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 x,y=meshgrid(0:0.25:4*pi); z=sin(x+sin(y)-x/10; mesh(x,y,z); axis(0 4*pi 0 4*pi -2.5 1);【例例3.3-5】绘制三维曲面图绘制三维曲面图z=sin(x+sin(y)-x/10。05100510-2.5-2-1.5-1-0.500.51MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17% 绘制圆柱面绘制圆柱面 subplot(2,2,1); x,y,z = cylinder; su

31、rf(x,y,z); % 绘制哑铃面绘制哑铃面 subplot(2,2,2); t = 0:pi/10:2*pi; X,Y,Z = cylinder(2+cos(t); surf(X,Y,Z);【例例3.3-6】调用函数绘制柱面,球面,椭球面。调用函数绘制柱面,球面,椭球面。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17% 绘制球面,半径为绘制球面,半径为10,球心,球心 (1,1,1) subplot(2,2,3); x,y,z = sphere; surf(10*x+1,10*y+1,10*z+1); axis equal;% 绘制椭球面绘制椭

32、球面 subplot(2,2,4); a=4; b=3; t = -b:b/10:b; x,y,z = cylinder(a*sqrt(1-t.2/b2),30); surf(x,y,z); MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17-101-10100.51-505-50500.51-50510-50510-50510-505-50500.51MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17% 饼图饼图 subplot(2,3,1); pie3(2347,1827,2043,3025); title

33、(三维饼图三维饼图); % 柱状图柱状图 subplot(2,3,2); bar3(magic(4); title(三维柱状图三维柱状图); 【例例3.3-7】绘制三维饼图、三维柱状图、三维火柴杆图、三维填绘制三维饼图、三维柱状图、三维火柴杆图、三维填充图、三维向量场图和立体切片图(四维图)充图、三维向量场图和立体切片图(四维图).MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17% 火柴杆图火柴杆图 subplot(2,3,3); y=2*sin(0:pi/10:2*pi); stem3(y); title(三维火柴杆图三维火柴杆图); % 填充图填

34、充图 subplot(2,3,4); fill3(rand(3,5),rand(3,5),rand(3,5), y ); title(三维填充图三维填充图); MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17% 三维向量场图三维向量场图 subplot(2,3,5); X,Y = meshgrid(0:0.25:4,-2:0.25:2); Z = sin(X).*cos(Y); Nx,Ny,Nz = surfnorm(X,Y,Z); surf(X,Y,Z); hold on; quiver3(X,Y,Z,Nx,Ny,Nz,0.5); title(三维

35、向量场图三维向量场图); axis(0 4 -2 2 -1 1); MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17% 立体切片图(四维图)立体切片图(四维图) subplot(2,3,6); t = linspace(-2,2,20); X,Y,Z = meshgrid(t,t,t); V = X.*exp(-X.2-Y.2-Z.2); xslice = -1.2,.8,2; yslice = 2; zslice = -2,0; slice(X,Y,Z,V,xslice,yslice,zslice); title(立体切片图(四维图)立体切片图(四

36、维图)); MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 ezsurf(u*sin(v),u*cos(v), u,-2*pi,2*pi,-2*pi,2*pi)【例例3.3-8】调用调用ezsurf函数绘制圆锥面函数绘制圆锥面sincosxuvyuvzuMATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 ezsurf(u*sin(v),u*cos(v), 4*v,-2*pi,2*pi,-2*pi,2*pi)【例例3.

37、3-9】调用调用ezsurf函数绘制螺面函数绘制螺面sincos4xuvyuvzvMATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 ezmesh(3*cos(u)*sin(v),2*cos(u)*cos(v),sin(u),-2*pi,2*pi,-2*pi,2*pi)【例例3.3-10】调用调用ezsurf函数绘制椭球面函数绘制椭球面3cos sin2cos cossinxuvyuvzuMATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17二、三维图形的修饰和添加注释二、三维图形的修饰和添加注释1. 绘图色彩的调

38、整绘图色彩的调整colormap 函数函数 colormap(map),设置,设置map为当前颜色映像矩阵为当前颜色映像矩阵 colormap(default),恢复当前颜色映像矩阵为默认值,恢复当前颜色映像矩阵为默认值 cmap = colormap,获取当前颜色映像矩阵,获取当前颜色映像矩阵 colormap(ax,),设置当前,设置当前axes对象的颜色映像矩阵对象的颜色映像矩阵 MATLAB中提供了中提供了colormap函数,可以根据颜色映像矩函数,可以根据颜色映像矩阵对图形对象的色彩进行调整。所谓的颜色映像矩阵就是一阵对图形对象的色彩进行调整。所谓的颜色映像矩阵就是一个个 的矩阵,

39、的矩阵,k行表示有行表示有k种颜色,每行种颜色,每行3个元素分别代表个元素分别代表红、绿、蓝三元色的灰度值,取值均在红、绿、蓝三元色的灰度值,取值均在0,1之间。之间。3kmap的设置有两种,可以人为指定一个元素值均在的设置有两种,可以人为指定一个元素值均在0,1之间的之间的 的矩阵,也可以用的矩阵,也可以用MATLAB自带的自带的17种颜色映像矩阵。在种颜色映像矩阵。在MATLAB命令窗口分别运行命令窗口分别运行autumn、bone、colorcube、cool、copper、flag、gray、hot、hsv、jet、lines、pink、prism、spring、summer、whit

40、e和和winter函数,就可得到这函数,就可得到这17种颜色映种颜色映像矩阵像矩阵MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-172. 着色方式调整着色方式调整shading 函数函数 shading flat,平面着色,同一个小网格面和相应的线段,平面着色,同一个小网格面和相应的线段用同一种颜色着色。用同一种颜色着色。 shading faceted,类似于,类似于shading flat,平面着色,只是,平面着色,只是网格线都用黑色,这是默认着色方式。网格线都用黑色,这是默认着色方式。 shading interp,通过颜色插值方式着色。,通过颜

41、色插值方式着色。 shading(axes_handle,),为句柄值为,为句柄值为axes_handle的坐的坐标系内的图形对象设置着色方式。标系内的图形对象设置着色方式。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-173. 透明度调整透明度调整 利用利用alpha函数函数调整透明度调整透明度 调用:调用:alpha(alpha_data) 说明:说明:alpha_data是一个介于是一个介于0和和1之间的数,之间的数,alpha_data = 0表示完全透明,表示完全透明,alpha_data = 1表示完全不透表示完全不透明,明,alpha_d

42、ata 的值越接近于的值越接近于0,透明度越高,透明度越高 通过图形对象的通过图形对象的“FaceAlpha”属性调整透明度属性调整透明度 调用:调用:set(h,FaceAlpha,0.25); 说明:说明:h为图形对象句柄,为图形对象句柄,0.25是是“FaceAlpha”属性的属属性的属性值,由用户随意指定。性值,由用户随意指定。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 figure; X,Y,Z = sphere; surf(X,Y,Z); colormap(lines); shading interp hold on; mesh(2

43、*X,2*Y,2*Z) hidden off axis equal axis off figure; surf(X,Y,Z,FaceColor,r); hold on; surf(2*X,2*Y,2*Z,FaceAlpha,0.4); axis equal axis off【例例3.3-11】三维图形的透视效果三维图形的透视效果MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-174. 光源设置与属性调整光源设置与属性调整 light函数函数 light(Prope

44、rtyName,propertyvalue,) 建立一个光源,并设置光源属性(建立一个光源,并设置光源属性(Position、Color和和Style)Position是位置属性,设置光源位置,其属性值为是位置属性,设置光源位置,其属性值为三个元素的向量三个元素的向量x, y, z,即光源的三维坐标;,即光源的三维坐标;Color是颜是颜色属性,设置光源颜色,其属性值可以是代表颜色的字符色属性,设置光源颜色,其属性值可以是代表颜色的字符(如表(如表3.2-1所列),也可以是由红、绿、蓝三元色的灰度所列),也可以是由红、绿、蓝三元色的灰度值组成的向量;值组成的向量;Style是光源类型属性,设置

45、光源类型,其是光源类型属性,设置光源类型,其取值为字符串取值为字符串 infinite 或或 local,分别表示平行光源和点,分别表示平行光源和点光源。光源。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 handle = light() 建立一个光源,并获取其句柄值建立一个光源,并获取其句柄值handle,之后可以通过,之后可以通过get(handle)查看光源的所有属性,也可以通过查看光源的所有属性,也可以通过set(handle, PropertyName,propertyvalue,)设置光源的属性值。设置光源的属性值。MATLAB绘图绘

46、图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-175. 调整光照模式调整光照模式 lighting函数函数 lighting flat,产生均匀光照,选择此方法,以查看面对,产生均匀光照,选择此方法,以查看面对象,是光照模式的默认设置。象,是光照模式的默认设置。 lighting gouraud,计算顶点法线并作线性插值修改表面,计算顶点法线并作线性插值修改表面颜色,选择此方法,以查看曲面对象。颜色,选择此方法,以查看曲面对象。 lighting phong,做线性插值并计算每个像素的反射率来,做线性插值并计算每个像素的反射率来修改表面颜色,选择此方法,以查看曲面对象。

47、此方法比修改表面颜色,选择此方法,以查看曲面对象。此方法比lighting gouraud的效果好,但是用于渲染的时间较长。的效果好,但是用于渲染的时间较长。 lighting none,关掉照明。,关掉照明。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-176. 图形表面对光照反射属性设置图形表面对光照反射属性设置 material函数函数 material shiny,使图形对象有相对较高的镜面反射,镜使图形对象有相对较高的镜面反射,镜面光的颜色仅取决于光源颜色。面光的颜色仅取决于光源颜色。 material dull,使图形对象有更多的漫反射,反

48、射光的使图形对象有更多的漫反射,反射光的颜色仅取决于光源颜色。颜色仅取决于光源颜色。 material metal,使图形对象有非常高的镜面反射和非常使图形对象有非常高的镜面反射和非常低的环境光及漫反射,反射光的颜色取决于光源颜色和图低的环境光及漫反射,反射光的颜色取决于光源颜色和图形表面的颜色。形表面的颜色。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 material(ka kd ks) material(ka kd ks n) material(ka kd ks n sc),用用ka、kd和和ks分别设置图形分别设置图形对象的环境光、漫反射

49、和镜面反射的强度,用镜面指数对象的环境光、漫反射和镜面反射的强度,用镜面指数n控控制镜面亮点的大小,用制镜面亮点的大小,用sc设置镜面颜色的反射系数。设置镜面颜色的反射系数。ka、kd、ks、n和和sc均为标量,均为标量,sc的取值介于的取值介于0和和1之间。之间。 material default,恢复恢复ka、kd、ks、n和和sc的默认值。的默认值。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-177. 调整视点位置调整视点位置 view函数函数 view(az,el),设置三维绘图的视角,设置三维绘图的视角, az是方位角,是方位角,el表示表

50、示相对于相对于xoy平面的仰角,。平面的仰角,。zyx-y视点az方位角el仰角MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 view(x,y,z),设置视点的三维直角坐标,设置视点的三维直角坐标x, y, z. view(2),设置默认的二维视角,设置默认的二维视角,az = 0, el = 90. view(3),设置默认的三维视角,设置默认的三维视角,az = -37.5, el = 30. view(ax,),设置句柄值为,设置句柄值为ax的坐标系的视角。的坐标系的视角。 view(T),用,用viewmtx函数生成的函数生成的 的视角转

51、换矩阵作的视角转换矩阵作为输入来设置视角。为输入来设置视角。 az,el = view,返回当前方向角和仰角。,返回当前方向角和仰角。 T = view,返回一个,返回一个 的视角转换矩阵。的视角转换矩阵。4 44 4MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 t=0:pi/20:2*pi; x,y,z= cylinder(2+sin(t),100); surf(x,y,z); xlabel(X); ylabel(Y); zlabel(Z); set(gca,color,none); shading interp; colormap(coppe

52、r); light(Posi,-4 -1 0); lighting phong; material metal; hold on; plot3(-4,-1,0,p,markersize, 18); text(-4,-1,0,光源光源,fontsize,14,fontweight,bold); 【例例3.3-12】绘制带光照的花瓶。绘制带光照的花瓶。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 vert = 0 0 0;0 200 0;200 200 0;2

53、00 0 0;0 0 100;0 200 100;200 200 100;200 0 100; fac = 1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8; view(3); h = patch(faces,fac,vertices,vert,FaceColor,g); set(h,FaceAlpha,0.25); hold on; x0,y0,z0 = sphere; x = 30 + 30*x0; y = 50 + 30*y0; z = 50 + 30*z0;【例例3.3-13】绘制一个透明的立方体盒子,里面放红色、蓝色和绘制一个透明的立方体

54、盒子,里面放红色、蓝色和黄色三个球。黄色三个球。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 h1 = surf(x,y,z,linestyle,none,FaceColor,r,EdgeColor,none); x = 110 + 30*x0; y = 110 + 30*y0; z = 50 + 30*z0; h2 = surf(x,y,z,linestyle,none,FaceColor,b,EdgeColor,none); x = 110 + 30*x0; y = 30 + 30*y0; z = 50 + 30*z0; h3 = surf(

55、x,y,z,linestyle,none,FaceColor,y,EdgeColor,none); lightangle(45,30); lighting phong; axis equal; xlabel(X); ylabel(Y); zlabel(Z); MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17第四节第四节 图形的打印和输出图形的打印和输出MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17一、把图形复制到剪

56、贴板一、把图形复制到剪贴板1. 界面操作界面操作MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 复制选项设置复制选项设置实际上在将图形窗口中的图形复制到剪贴板之前,还实际上在将图形窗口中的图形复制到剪贴板之前,还可以通过界面操作对复制选项进行设置。选择可以通过界面操作对复制选项进行设置。选择“Edit”菜单下的菜单下的“Copy Options”选项,弹出复制选项界面,选项,弹出复制选项界面,本界面用来设置图形复制到剪贴板的格式(本界面用来设置图形复制到剪贴板的格式(Clipboard format)、背景颜色()、背景颜色(Figure back

57、ground color)和图)和图形尺寸(形尺寸(Size)。)。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 复制模板设置复制模板设置在复制选项界面的左方浏览树在复制选项界面的左方浏览树中选中中选中Figure Copy Template节节点,将弹出复制模板界面。点,将弹出复制模板界面。复复制模板界面中给出了制模板界面中给出了3个模板选个模板选项:项:Word、PowerPoint和和Restore Defaults,当需要把,当需要把MATLAB图形窗口中的图形复图形窗口中的图形复制粘贴到制粘贴到Microsoft Word和和Micro

58、soft PowerPoint应用程序时,应用程序时,分别可以用前两个模板,最后一个选项用来恢复默认设置。分别可以用前两个模板,最后一个选项用来恢复默认设置。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-172. 利用利用MATLAB命令进行复制操作命令进行复制操作 print函数函数调用格式:调用格式:printprint(argument1,argument2,.)print(handle,filename)print argument1 argument2 . argumentnpcmd,dev = printoptMATLAB绘图绘图 谢中华谢

59、中华, MATLAB从零到进阶从零到进阶. 2022-3-17 h = figure; ezplot(sin(x) ,0,2*pi); print(h, -dmeta) 【例例3.4-1】调用调用print函数复制图形到剪贴板。函数复制图形到剪贴板。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 hgexport函数函数调用格式:调用格式: hgexport(h,filename)把句柄值为把句柄值为h的图形窗口中的图形写入默认的的图形窗口中的图形写入默认的eps格式格式文件。文件。filename为字符串,用来指明文件名和保存路径,为字符串,用来

60、指明文件名和保存路径,如果不指明保存路径,图形默认保存到如果不指明保存路径,图形默认保存到MATLAB当前当前文件夹。文件夹。 hgexport(h,-clipboard)把句柄值为把句柄值为h的图形窗口中的图形复制到的图形窗口中的图形复制到Windows剪贴剪贴板。板。MATLAB绘图绘图 谢中华谢中华, MATLAB从零到进阶从零到进阶. 2022-3-17 h = figure; ezplot(sin(x) ,0,2*pi); hgexport(h, -clipboard); 【例例3.4-1续续】调用调用hgexport函数复制图形到剪贴板。函数复制图形到剪贴板。MATLAB绘图绘图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论