1、MATLAB仿真技术及应用,第四章 数据可视化,主要内容,4.1 图形窗口介绍 4.2 二维图形绘制 4.3 三维图形绘制 4.4 特殊图形绘制 4.5 句柄图形,了解MATLAB的图形对象体系,掌握基本的绘图函数。,重点,4.1 图形窗口介绍,figure,创建图形窗口:,功能:,创建一个新的图形窗口,每执行一次就会产生一个图形窗口,可以同时产生多个图形窗口。 通过figure(n)选择第n个窗口。,编辑图形,clf 清空当前图形窗口close 关闭当前图形窗口close all 关闭所有图形窗口,关闭图形窗口:,4.2 二维图形绘制,4.2.1 基本二维图形绘制,plot函数是最基本的二维
2、图形绘制函数,格式如下:,格式1:,功能: (1)若x,y为同规模的向量,则绘制以x为横坐标、y为纵坐标 的一条曲线。,plot函数,x=0:1:6; y=x.2+1;plot(x,y),例如:,plot(x,y),注意!,向量维数一致,(2)若x为向量、y是二维数组,则绘制以x为横坐标、y 的每一行(列)为纵坐标的多条曲线。,x=0:1:6; y= sin(x);cos(x);plot(x,y),x = 0 1 2 3 4 5 6,y =0 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.27941.0000 0.5403 -0.4161 -0.9900 -0
3、.6536 0.2837 0.9602,以x为横坐标,y的每一行为纵坐标:,以x为横坐标,y的每一列为纵坐标:,x=0:1:6; y= sin(x),cos(x); plot(x,y),y =0 1.00000.8415 0.54030.9093 -0.41610.1411 -0.9900-0.7568 -0.6536-0.9589 0.2837-0.2794 0.9602,x = 0123456,(3)若x,y均为二维数组(必须相同规模),则绘制以它们的对应列为横、纵坐标的多条曲线。,x=0:0.02:6;0:0.02:6;y=sqrt(x(1,:);exp(-x(2,:);plot(x,y
4、),例如:,图3 x1=0:0.02:6;y1=sqrt(x1);plot(x1,y1),图2x2=0:0.02:6;y2=exp(-x2);plot(x2,y2),图3,图2,图1,格式2:,Plot(y),功能: (1)若y为向量,其元素为实数,则绘制以其下标为横坐标、以y为纵坐标的图形,即相当于plot(1:length(y),y)。,x=0:1:6; y=x.2+1;plot(y),例如:,(2)若y为复数向量,则绘制以其实部为横坐标,以其虚部系数为纵坐标的图形,即相当于plot(real(y),imag(y)。,(3)曲线条线等于y的列数。,x=0:0.2:10*pi; y=sin(
5、x);cos(x);plot(y),例如:,格式3:,plot (x1,y1,x2,y2,),功能: (1)当输入参数都为向量时,x1和y1,x2和y2,xn和yn分别组成一组向量,每组向量长度可以不同。可以在同一坐标内绘制出多条曲线。(2)当输入参数有矩阵形式时,相应的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。,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
6、;y3;plot(x,y,x1,y1-1),例如:,函数linespace (a,b,n)产生a,b区间内的n个数,构成一个行向量。默认产生100个点。,格式4:,指定曲线线型、颜色和标记的,plot (x,s) plot (x,y,s) plot (x1,y1,s1,x2,y2,s2),其中s为一字符串,用于指定绘图时的曲线线型、曲线颜色和线的标记。选项可以组合使用。,曲线线型: (实线, 缺省设置) : (虚线) . (点划线) (双划线),曲线颜色: y yellow (黄色) m magenta (品红) c cyan (青)天兰 r red (红) g green (绿) b blu
7、e (兰) w white (白) k black (黑),曲线标记: point (点) X x-mark (叉号) O circle (园字母O) + plus (加号) * star (星号) s square (方块) d diamond (点) v triangle(down) (下三角) triangle(up) (上三角)triangle(right) (右三角) p pentagram (空心五角星) h hexagram (空心六角星),x=0:0.2:2*pi;y=sin(x);plot(x,y,-bp),例如:,4.2.2 特殊坐标二维图形,(1)极坐标下的曲线绘制,po
8、lar(, ,选项),t=0:0.1:8*pi; r=2*sin(t/2); polar(t,r); title(双心脏线);,例如:,(2)双y轴图形,函数:plotyy,功能:在同一坐标系中使用不同坐标绘制两个图形,,plotyy(x1,y1,x2,y2),plotyy(x1,y1,x2,y2,function),plotyy(x1,y1,x2,y2,function1,function2),调用格式:,其中function字符串用来指定绘图函数。,x=-2*pi:pi/10:2*pi; y=sin(x); z=2*abs(cos(x); plot(x,y,x,z) title(按相同坐标
9、刻度绘制两个图形) plotyy(x,y,x,z,plot,semilogy) title(按不同坐标刻度绘制两个图形),例如:,(3)采用对数坐标的曲线,loglog(x,y) 功能: x,y轴均采用对数刻度绘制图形semilogx(x,y) 功能:仅x轴采用对数刻度,y轴仍采用线性刻度semilogy(x,y) 功能:仅y轴采用对数刻度,x轴仍采用线性刻度,x=1:10;y=10*x.2;semilogy(x,y),例如:,4.2.3 图形窗口操作及图形缩放和填充,(1)图形窗口的分割,subplot函数 调用格式 :subplot(m,n,p),功能:将当前图形窗口分成mn个绘图区,即每
10、行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。,x=-2*pi:pi/10:2*pi; y=sin(x); z=2*abs(cos(x); subplot(2,1,1) plot(x,y,x,z) title(按相同坐标刻度绘制两个图形) subplot(2,1,2) plotyy(x,y,x,z,plot,semilogy) title(按不同坐标刻度绘制两个图形),例如:,(2) 坐标系的调整,axis函数 调用格式:axis(xmin xmax ymin ymax zmin zmax),常用的格式还有: axis equal:
11、横纵坐标轴采用等长刻度。 axis square:产生矩形坐标系。 axis auto:使用缺省设置。 axis off:隐去坐标轴。 axis on:显示坐标轴。,x=linspace(0,2*pi); y=sin(x);z=cos(x); plot(x,y,b:,x,z,k-) axis(off),例如:,(3) 图形的缩放,zoom函数 调用格式:,zoom on:使当前图形窗口的图形可放缩。,zoom off:关闭缩放状态,zoom:切换zoom on与zoom off状态,zoom out:回复图形的原始大小,(4) 二维图形的填充,fill函数 函数格式:fill(x,y,c),功
12、能:用x和y中的数据生成多边形,用c指定的颜色填充它。,fill(X1,Y1,C1,X2,Y2,C2,) 指定多个要填充的二维区域,x=1:5; y=0,-1,1,-1,0; fill(x,y,r),例如:,4.2.4 图形的标注,title(字符串):当前坐标系顶部加标题 xlabel (字符串): 当前坐标系x轴旁加标题(下方) ylabel (字符串):当前坐标系y轴旁加标题(左侧) text (x,y,字符串):当前坐标系指定位置处加文本 gtext (字符串):在鼠标单击处加文本,图例说明: legend(字符串1,字符串2,):在当前图形内建立一图例说明框,框内显示各字符串。并且图
13、形的曲线与字符串依次对应,可用鼠标拖动图例框改变其位置。 legend off 功能: 删掉图例说明框,x=linspace(0,2*pi); y=sin(x);z=cos(x);plot(x,y,b:,x,z,m+)xlabel(变量X) ylabel(函数Y、Z) title(正弦与余弦曲线)text(3.3,0.1,sin(x) legend(sin(x),cos(x) gtext(cos(x),例如:,4. 三维图形绘制,4.1 基本三维图形绘制,plot3(x,y,z,s),x,y=meshgrid(-pi:0.1:pi);Z=sin(x)+cos(y);plot3(x,y,z);
14、xlabel(X);ylabel(Y);zlabel(Z);,t = 0:pi/50:10*pi;plot3(sin(t),cos(t),t,:r*),s为规定线形、颜色和标记的字符串。,4.2 网格图的生成,功能:生成由X,Y和Z指定的网线面,mesh(x,y,z),X,Y = meshgrid(-5:0.1:5); Z = exp(-(X.2+Y.2); mesh(X,Y,Z);,例如:,4.3.3 表面图的生成,surf(x,y,z) 功能 : 显示三维带阴影曲面图。 surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。,shading flat
15、:将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。,shading interp:在网格片内采用颜色插值处理,使片与片之间的颜色过渡很平缓,得出的表面图显得最光滑。,shading faceted:缺省值,带有连接线条的曲面。,subplot(1,2,1) x,y,z = peaks(30); surf(x,y,z); title (未经平滑的表面图);,例如:,subplot(1,2,) surf(x,y,z); shading flat; title (经平滑的表面图);,4.4 特殊图形绘制,4.1 直方图和面积图,() 直方图,Bar函数 功能
16、: 二维垂直条形图,用垂直条形显示向量或矩阵中的值。 格式:bar(y) , bar(x,y), bar(,width), bar(,style)。,此外还有 bar3 , barh, bar3h函数。 Bar3用于绘制三维的竖向直方图。 barh, bar3h用于绘制二维、三维的横向直方图。, y=rand(5,3); subplot(1,3,1); bar(y); subplot(1,3,2); bar3(y,group); subplot(1,3,3); bar(y,stack);,例如:,() 面积图,area(x,y,属性名1,属性值1,) 功能:对x、y界定的区域填充,并对各属性设
17、置对应属性值。,t=linspace(0,2*pi,14); x=sin(2*t); y=cos(2*t); area(x,y,facecolor,r),例如:,4.2阶梯状图和针状图,Stairs 阶梯状图,Stem 针状图,4.误差条状图,函数errorbar (x,y,e) 功能: 沿着一曲线画误差棒形图。误差棒为数据的置信水平或者为沿着曲线的偏差。参数若为矩阵,则按列画出误差棒。,x=0:0.2:2*pi; y=sin(x); e=rand(size(x)/5 errorbar(x,y,e); title(Errorbar plot);,4.5 句柄图形,matlab语言的句柄绘图可以
18、对图形各基本对象进行更为细腻的修饰,可以产生更为复杂的图形,而且为动态图形的制作奠定了基础。,高层绘图函数是对整个图形进行操作的,图形每一部分的属性都是按缺省方式设置的。充分体现了matlab语言的实用性。 底层绘图函数可以定制图形,对图形的每一部分进行控制,用户可以用来开发用户界面以及各专业的专用图形。充分体现了matlab语言的开发性。,Matlab的图形系统由两部分组成:,4.5.1 图形对象的句柄及句柄操作,什么是句柄?句柄是图形对象的标识代码,标识代码含有图形对象的各种必要的属性信息。 各图形对象的句柄数据格式:根屏幕 0图形窗口 整数,表示图形窗口数其它对象 对应的浮点数 句柄图形
19、(Handle Graphics)利用底层绘图函数,通过对对象属性的设置与操作实现绘图。,4.5.2句柄图形对象的层次结构,父对象子对象,窗口对象,线对象,轴对象,面对象,像对象,线对象,块对象,文字对象,4.5.3 创建图形对象的底层函数,(1)figure创建图形窗口 调用格式: h=figure(n) n为窗口序号 (2)uicontrol图形界面控制 调用格式: h=uicontrol(property,value) property/value确定控制类型,(3)uimenu创建用户界面菜单 调用格式: h=uimenu(property,value) (4)axes 创建轴对象h=
20、axes(property, left,bottom,width,height) 定义轴对象的位置与大小,(5)line 创建线对象 (6)patch 创建块对象 (7)surface 创建面对象 (8)image 显示图象 (9)text 标注文字,图形对象句柄的操作,句柄属性的设置与修改 get: 获得句柄图形对象的属性和返回某些对象的句柄值 set: 改变图形对象的属性 专用函数: gcf:获得当前窗口对象的句柄 gca:获得当前轴对象的句柄 gco:获得当前对象的句柄 delete:删除当前对象的句柄,例:创建1号窗口,返回句柄h=figure(1)h=1 返回值为窗口号数例:h=li
21、ne(1:6,1:6)创建线对象的同时也建立了一个唯一的句柄变量h是句柄值浮点数,x,y=meshgrid(-3:0.5:3);z=exp(-x.2-y.2);f=figure(position,50,50,400,300);a=axes(Color,0.2,0.2,0.2,XTick,-3,-2,-1,0,1,2,3,. YTick,-3,-2,-1,0,1,2,3);s=surface(Xdata,x,Ydata,y,Zdata,z,. Facecolor,.8,.8,.3,Marker,o);view(3),例,例:创建一个线对象并返回线对象的句柄值h1=line(0:10,0:10)h1 =57.0001 h1为句柄的代码值,小结,第四章 数据可视化,END,本节介绍了Matlab语言的图形处理功能,通过学习应该掌握: 绘制简单的二维和三维图形掌握曲线绘制的基本指令,会使用线形、色彩、数据点标记表现不同数据的特征掌握生成和运用标识注释图形。,Thank You !,