《数据和函数的可视化.pps》由会员分享,可在线阅读,更多相关《数据和函数的可视化.pps(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、六六、数数据据和和函函数数的的可可视视化化v可可视视化一般步化一般步骤骤v二二维维曲曲线绘图线绘图的基本操作的基本操作v三三维绘图维绘图的基本操作的基本操作v三三维图维图形的精形的精细细控制控制v函数函数绘图绘图的的简简捷指令捷指令v图图形窗功能形窗功能简简介介v句柄句柄图图形形16.1 可视化一般步骤可视化一般步骤 MATLAB具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的可视化。可视化具体包括离散数据和离散函数的可视化,以及连续函数的可视化。步骤步骤内容内容1曲线数据准备:对于二维曲线,横坐标和纵坐标数据变量;对于三维曲面,矩阵参变量和对应的函数值。2 指定图形窗口和子图位
2、置:默认时,打开Figure No.1窗口或当前窗口、当前子图;也可以打开指定的图形窗口和子图。3设置曲线的绘制方式:线型、色彩、数据点形。4 设置坐标轴:坐标的范围、刻度和坐标分格线5 图形注释:图名、坐标名、图例、文字说明6 着色、明暗、灯光、材质处理(仅对三维图形使用)7视点、三度(横、纵、高)比(仅对三维图形使用)8图形的精细修饰(图形句柄操作):利用对象属性值设置;利用图形窗工具条进行设置。l 步骤1和3是最基本的绘图步骤;l 步骤2一般在图形较多的情况下,需要指定图形窗口、子图时使用;l 除了步骤1、2、3的其他步骤用户可以根据自己需要改变前后次序。2%三维绘图三维绘图x=-10:
3、10;%自变量采样自变量采样y=-10:10;xx,yy=meshgrid(x,y);%格点数组格点数组zz=xx.2-yy.2;%计算函数数组计算函数数组figure(2)surf(xx,yy,zz)hold oncolormap(hot)surface=mesh(xx,yy,zz+50)%调用三维曲面绘图指令调用三维曲面绘图指令 get(surface)hold off【例61】绘图基本步骤%exm06_01.m%二维绘图二维绘图%准备数据准备数据n=0:20;%横坐标取横坐标取020共共21个数据个数据y=(n-10).*(n=10)+abs(n-10).*(n=10);%纵坐标按函数纵
4、坐标按函数y取值取值%绘图绘图figure(1)%指定指定1号图形窗号图形窗plot(n,y,rd,markersize,20);%在数据点画红色菱形符在数据点画红色菱形符hold onplot(n,y);line=stem(n,y,gh);%绘离散数据图绘离散数据图%图形控制图形控制set(line,linewidth,2)36.2 二维曲线绘图的基本操作二维曲线绘图的基本操作6.2.1 基本绘图命令基本绘图命令plot 3.plot(x1,y1,s1,x2,y2,s2)用多个矩阵对为参数,自动以不同的颜色绘制不同曲线。每一对矩阵(xi,yi)均按照前面的方式解释,不同的矩阵对之间,其维数可
5、以不同。1.plot(x,s)x为实向量时,以其下标为横坐标,元素值为纵坐标画一条连续曲线;x为实矩阵时,按每列绘制每列元素值相对其下标的曲线,曲线条数为矩阵列数;x为复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。2.plot(x,y,s)x、y是同维向量时,绘制以x为横坐标y为纵坐标的二维曲线;如果x是向量,而y是矩阵,则x的长度与矩阵y的行数或列数必须相等,如果x的长度与y的行数相等,则向量x与矩阵y的每列向量对应画一条曲线;如果x的长度与y的列数相等,向量x与y的每行向量画一条曲线,如果y是方阵,则x和y的行数和列数都相等,将向量x与矩阵y的每列向量画一条曲线;如果x是
6、矩阵,而y是向量,则y的长度必须等于x的行数或列数,绘制的方法与前一种相似;如果x和y都是矩阵,则大小必须相同,矩阵x的每列和y的每列画一条曲线。l s,s1,s2:用来指定线型、色彩、数据点行等选项的字符串。46.2.2 曲线的色彩、线型和数据点形曲线的色彩、线型和数据点形 颜颜色色数据点数据点间连线间连线数据点形数据点形类类型型符号符号类类型型符符号号类类型型符号符号黄色品红(紫)色青色红色绿色蓝色白色黑色y(Yellow)m(Magenta)c(Cyan)r(Red)g(Green)b(Blue)w(White)k(Black)实线(默认)虚线点划线双划线-:-.-实点标记圆圈标记叉号形
7、十字形星号标记方块标记钻石形标记向下的三角形标记向上的三角形标记向左的三角形标记向右的三角形标记五角星标记六边形标记.ox+*sdvph6.2.3 设置坐标轴和图形标识设置坐标轴和图形标识 1.坐标轴的控制坐标轴的控制2.用坐标控制命令axis来控制坐标轴的特性,包括轴背景设置、取向、范围和坐标轴的高宽比。见P164表6.2-3.52.分格线和坐标框分格线和坐标框 grid on/grid off 画出分格线/不画出分格线 box on/box off 使当前坐标框呈封闭/开启形式3.图形标识图形标识title(s)书写图名 xlabel(s)横坐标轴名ylabel(s)纵坐标轴名legend
8、(s,pos)在指定位置建立图例legend off 擦除当前图中的图例text(xt,yt,s)在图形的(xt,yt)坐标处书写文字注释 字体式样等精细设置见表6.2-4至6.2-7。6.2.4 多个图形绘制的方法多个图形绘制的方法 1.指定图形窗口指定图形窗口 figure(n)产生新图形窗口并设置为当前图形窗口,而不关闭其它窗口。2.同一窗口多个子图同一窗口多个子图 subplot(m,n,k)使(mn)幅子图中的第k幅成为当前图 将图形窗口划分为mn幅子图,k是当前子图的编号,“,”可以省略。子图的序号编排原则是:左上方为第1幅,先向右后向下依次排列,子图彼此之间独立。如果在使用绘图命
9、令之后,想清除图形窗口画其它图形,应使用“clf”命令清图形窗。clf 清除子图 63.同一窗口多次叠绘同一窗口多次叠绘hold on/hold off 使当前坐标系和图形保留保留/不保留不保留 在设置了“hold on”后,如果画多个图形对象,则在生成新的图形时保留当前坐标系中已存在的图形对象,MATLAB会根据新图形的大小,重新改变坐标系的比例。plotyy(x1,y1,x2,y2)以左、右不同纵轴绘制两条曲线 左纵轴用于(x1,y1)数据,右纵轴用于(x2,y2)数据来绘制两条曲线。坐标轴的范围、刻度都自动产生。4.双纵坐标图双纵坐标图 6.2.5 交互式图形命令交互式图形命令 x,y=
10、ginput(n)用鼠标从图形上获取n个点的坐标(x,y)gtext(s)用鼠标把字符串放置到图形上 6.2.6 MATLAB的特殊图形绘制的特殊图形绘制 bar(x,y,width,参数参数)画垂直条形图 barh 画水平条形图area(y)画面积图 fill(x,y,c)画实心图 pie(x,explode,label)画二维饼图 stem、stairs和和scatter 画离散数据图 7%exm06_02.m%基本绘图基本绘图plotfigure(1)x1=0:10;y1=x1/10;subplot(2,2,1)plot(x1,y1,r:);subplot(2,2,2)x2=reshap
11、e(1:21,7,3);%由由121组成组成73矩阵矩阵plot(x2)%依次画蓝绿红依次画蓝绿红3条曲线条曲线【例例62】二维绘图subplot(2,2,3)x3=x2+(x2-10)*i;%复数矩阵复数矩阵plot(x3)%以实部、虚部为横、纵坐标画以实部、虚部为横、纵坐标画3条曲线条曲线subplot(2,2,4)plot(x2,abs(x3)%以以x2、abs(x3)对应列元素为横、纵坐标画对应列元素为横、纵坐标画3条曲线条曲线%plotyy双纵坐标图双纵坐标图 figure(3)t=0:0.1:10;y1=sin(pi/5*t);y2=exp(-t);plotyy(t,y1,t,y2
12、)8%二维特殊图形二维特殊图形figure(2)x=90:94;y=0.4 0.5 0.2 0.6 0.5;0.22 0.54 0.91 0.52 0.44;0.75 0.85 0.57 0.24 0.31;%5年里三种产品生产曲线年里三种产品生产曲线subplot(2,2,1)area(x,y)%每年的总产量每年的总产量subplot(2,2,2)bar(x,y,stacked)%5年年3种产品产量比较种产品产量比较subplot(2,2,3)barh(x,y,grouped)%3种产品种产品5年总生产量百分比年总生产量百分比subplot(2,2,4)pie(sum(y),1 1 1)假设
13、9094年5年间某工厂生产A、B、C三种产品的数量分别为:(万件)(万件)9091929394A0.40.50.20.60.5B0.220.540.910.520.44C0.750.850.570.240.319%plot&fill&areafigure(4)x=1:5;y=0 2 1 3 4;subplot(1,3,1)plot(x,y,r)axis(square)subplot(1,3,2)fill(x,y,g)axis(square)subplot(1,3,3)area(x,y)axis(square)面积图和实心图的区别:面积图是绘制曲线和横轴间的面积,y的各列叠加在一起的,而实心图是
14、将起点和终点连接并填充颜色的多边形。10%exm06_04 x=0:0.1:2*pi;y=sin(x).*exp(-2*x);subplot(3,1,1)stem(x,y,filled)%画火柴杆图画火柴杆图 subplot(3,1,2)stairs(x,y)%画阶梯图画阶梯图 subplot(3,1,3)scatter(x,y)%画点图画点图【例例64】离散数据图形【例例63】图形标识%exm06_03clf;t=0:pi/50:2*pi;y=sin(t);plot(t,y);axis(0,2*pi,-1.2,1.2)title(The figure of exm0703)xlabel(x)
15、ylabel(y)text(pi/2,1,fontsize16leftarrowitsin(t)fontname隶书隶书极大值极大值)116.3 三维绘图的基本操作三维绘图的基本操作 6.3.1 绘制三维线图指令绘制三维线图指令plot3 plot3(x,y,z,s)绘制三维曲线plot3(x1,y1,z1,s1,x2,y2,z2,s2,)绘制多条三维曲线 当x、y、z是同维向量时,则绘制以x、y、z元素为坐标的三维曲线;当x、y、z是同维矩阵时,则绘制三维曲线的条数等于矩阵的列数。s是指定线型、色彩、数据点形的字符串。6.3.2 绘制三维网线图和曲面图绘制三维网线图和曲面图 1.三维图形的数
16、据准备三维图形的数据准备1)确定自变量x,y的取值范围和取值间隔,x=x1:dx:x2,y=y1:dy:y2;2)构成xy平面上的自变量“格点”矩阵,X,Ymeshgrid(x,y)2.网线图、曲面图基本指令网线图、曲面图基本指令mesh(z)以z矩阵列、行下标为x,y轴自变量画三维网线图mesh(x,y,z,c)x,y为自变量画由c指定用色的网线图surf(z)以z矩阵列、行下标为x,y轴自变量画三维曲面图surf(x,y,z,c)以x,y为自变量画由c指定用色的曲面图6.3.3 三维特殊图形绘图指令三维特殊图形绘图指令bar3(三维垂直条形图)、barh3(三维水平条形图)、fill3(三
17、维填色)、pie3(三维饼图)、stem3(三维离散杆图)12%三维网线和曲面三维网线和曲面figure(2)x=-2:0.5:2;y=x;%自变量取值自变量取值xx,yy=meshgrid(x,y);%生成生成“格点格点”矩阵矩阵zz=xx.2-yy.2;%计算格点上的函数值计算格点上的函数值subplot(2,2,1)stem3(xx,yy,zz)%用来表现在格点上的函数值用来表现在格点上的函数值hold onmesh(xx,yy,zeros(size(zz)%画格点网线画格点网线subplot(2,2,2)mesh(xx,yy,zz)【例例65】三维绘图%exm06_05%三维曲线三维曲
18、线figure(1)t=0:pi/50:10*pi;subplot(1,2,1)plot3(sin(t),cos(t),t);x=sin(t);0.5*sin(2*t);y=cos(t);0.5*cos(2*t);t=t;t;%x,y,t为同维矩阵为同维矩阵subplot(1,2,2)plot3(x,y,t)13subplot(2,2,3)surf(xx,yy,zz)subplot(2,2,4)surf(zz)%以以z矩阵列、行下标为矩阵列、行下标为x,y画曲面画曲面hold off%三维特殊图形三维特殊图形clearx=90:94;y=0.4 0.5 0.2 0.6 0.5;0.22 0.5
19、4 0.91 0.52 0.44;0.75 0.85 0.57 0.24 0.31;figure(3)subplot(1,2,1)bar3(x,y)%画三维垂直条形图画三维垂直条形图legend(A,B,C)%创建图例创建图例subplot(1,2,2)pie3(sum(y),1 0 0)%画三维饼图画三维饼图colormap(cool)%采用采用cool色图色图14【例例66】三维透视、镂空和裁剪%透视透视clearX,Y,Z=sphere(20);%产生球面坐标产生球面坐标 figure(1)subplot(2,2,1)surf(X,Y,Z);%画球面画球面shading interp;%
20、采用插补明暗处理采用插补明暗处理hold onmesh(2*X,2*Y,2*Z);%画网线图画网线图colormap(cool)hold offhidden off%显示被遮盖部分显示被遮盖部分axis equalaxis off%不显示坐标轴不显示坐标轴%镂空镂空index=find(X0&Y0);Z2=Z;Z2(index)=NaN;%镂空镂空x0,y0部分部分subplot(2,2,2)surf(X,Y,Z2)shading interp;axis equal%镂空不会产生切面镂空不会产生切面%裁切裁切index=find(Z0);Z3=Z;Z3(index)=zeros(size(in
21、dex);%切去切去z0部分部分subplot(2,2,3)surf(X,Y,Z3)hidden off%产生透视效果产生透视效果axis equalsubplot(2,2,4)fill3(X,Y,Z,g)axis equal156.4 三维图形的精细控制三维图形的精细控制 三维图形除了可象二维图形一样进行图形标识等操作之外,还有一些其他的精细控制指令,可对图形的视点、色彩、照明和材质等进行控制、处理。l 视点控制视点控制view(az,el)通过方位角和俯仰角改变视角view(vx,vy,vz)通过直角坐标改变视角 l 色彩控制色彩控制colordef 用色风格colormap 色图 sha
22、ding 浓淡处理alpha 透明度控制l 照明和材质处理照明和材质处理light 灯光设置material 控制光效果的材质 6.5 函数绘图的简捷指令函数绘图的简捷指令l 一元函数简捷绘图指令ezplotezplot(F)、ezplot(F,xmin,xmax)、ezplot(F,xmin,xmax,fig)l 二元函数简捷绘图指令ezplot3、ezmesh、ezsurf16【例例67】函数绘图指令%exm06_07%一元函数绘图一元函数绘图syms t tao;y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);%定义符号函数定义符号函数s=subs(int(y,t,0,
23、tao),tao,t);%获得积分函数获得积分函数subplot(2,2,1),ezplot(y,0,4*pi);grid%画画y曲线,分格线切换曲线,分格线切换subplot(2,2,2),ezplot(s,0,4*pi);grid%画画y的积分曲线的积分曲线title(s=inty(t)dt)%重写右子图图名重写右子图图名%二元函数绘图二元函数绘图subplot(2,2,3)ezsurf(x*y,circ);%在圆域上画在圆域上画z=xy曲面曲面shading flat;view(-18,28)x=cos(s)*cos(t);y=cos(s)*sin(t);z=sin(s);subplot
24、(2,2,4)ezsurf(x,y,z,0,pi/2,0,3*pi/2)%在指定矩形区域上画曲面在指定矩形区域上画曲面%s:0,pi/2 t:0,3*pi/2view(17,40);shading interp;colormap(spring)light(position,0,0,-10,style,local)light(position,-1,-0.5,2,style,local)material(0.5,0.5,0.5,10,0.3)176.6 图形窗功能简介图形窗功能简介 图形窗不仅可以显示图形,还可对图形进行编辑,包括线型、线宽、颜色、图形注释等等。图形对象编辑添加文字添加箭头添加直
25、线 放大缩小 三维图形旋转 按动图形对象编辑键后,双击要进行编辑的图形对象便可进入相应的编辑状态,在属性对话框中可对任一曲线和坐标轴的属性进行设置。一旦按下图形旋转按键,图形窗中的对象都被当作三维图形处理。按住鼠标左键不放,待出现引导旋转的蓝色框架后,图形便会随着鼠标的移动而转动。添加字符、箭头和直线都可随心所欲。186.7 句柄图形句柄图形 6.7.1 句柄图形体系句柄图形体系 句柄图形是一种面向对象的绘图系统,又称为低层图形。句柄图形体系由若干个图形对象组成。Root(屏幕)Figure(图图)Uicontrol(界面控件界面控件)Axes(轴轴)Uimenu(界面菜单界面菜单)Line(
26、线条线条)Surface(表面表面)Rectangle(矩形矩形)Patch(贴片贴片)Image(图像图像)Text(文字文字)Light(光源光源)Root(屏幕屏幕)l 图形对象图形对象:MATLAB把用于数据可视和界面制作的基本绘图要素称为句柄图形对象。l 句柄句柄:用来表明每个具体对象的“身份”,是存取图形对象的唯一规范标识符。l 句柄图形体系呈树状结构句柄图形体系呈树状结构。6.7.2 图形对象的操作图形对象的操作1图形对象的创建图形对象的创建 除根屏幕外,所有图形对象都由与之同名的指令创建。每个指令在创建对象的同时还可返回该对象的句柄。19命令命令功能功能说明说明h_ figur
27、e=figure(n)创建第n个图形窗口n为正整数h_axes=axes(position,left,bottom,width,height)创建坐标轴定义轴的位置和大小h_ line=line(x,y,z)创建直线z省略则在二维平面上h_ surface=surface(x,y,z,c)创建面x、y、z定义三维曲面,c是颜色参数h_ rectangle=rectangle(position,x,y,w,h,curvature,xc,yc)创建矩形x、y为左下顶点坐标,w、h为长方形的宽和高,xc、yc为曲率h_ patch=patch(faces,fac,veitices,vert)创建贴片
28、fac为多边形顶点的序号矩阵,vert为顶点矩阵h_ image=image(x)创建图像x为图像数据矩阵h_ text=text(x,y,string)创建文字x、y为字符串string的标注位置h_ light=light(PropertyName,Propertyvalue)创建光源设置光的入射方向h_ uicontrol=uicontrol(PropertyName,Propertyvalue)创建用户界面控件PropertyName和Propertyvalue指定控件的类型h_uimenu=uimenu(propertyName,Propertyvalue)创建用户界面菜单prope
29、rtyName和Propertyvalue指定菜单的形式创建对象的低层指令创建对象的低层指令202对象句柄的获取对象句柄的获取l 当前对象句柄的获取gcf 获取当前图形窗口句柄gca 获取当前坐标轴句柄gco 获取被鼠标最近点击对象的句柄 l 根据对象特性获取句柄h=findobj 返回根对象和所有子对象的句柄h=findobj(h_obj)返回指定对象的句柄h=findobj(PropertyName,PropertyValue)返回符合指定属性值的对象句柄h=findobj(h_obj,PropertyName,PropertyValue)在指定对象及子对象中查找符合指定属性值的对象句柄
30、l 追溯法获取句柄h_parent=get(h_obj,parent)获取h_obj的父对象的句柄h_children=get(h_obj,children)获取h_obj的子对象的句柄 3对象句柄的删除对象句柄的删除delete(h_obj)删除句柄所指对象及其子对象,不提示确认,使用时要小心。6.7.3 图形对象属性的获取和设置图形对象属性的获取和设置1创建对象时设置属性创建对象时设置属性h_fig=figure(color,red,menubar,none,position,0,0,300,300)如创建一个窗口,背景为红色,没有菜单条,在屏幕的(0,0)位置,宽度、高度为300。21或
31、者使用构架数组创建图形对象:ps.color=red;ps.position=0,0,300,300;ps.menubar=none;h_fig=figure(ps)h_fig=12.用用get函数获取属性值函数获取属性值get(h_obj)获取句柄对象所有属性的当前值get(h_obj,PropertyName)获取句柄对象指定属性的当前值 3.用用set函数设置属性值函数设置属性值 set(h_obj)显示句柄对象所有属性和属性值set(h_obj,PropertyName)显示句柄对象指定属性名的属性值set(h_obj,PropertyName,PropertyValue)设置句柄对象
32、指定属性的属性值set(h_obj,PropertyStructure)用构架数组设置句柄对象指定属性的属性值 4对象属性的默认设置和获取对象属性的默认设置和获取get(h_obj,DefaultObjectTypePropertyName)获取对象属性的默认值set(h_obj,DefaultObjectTypePropertyName,PropertyValue)设置用户定义的属性默认值set(h_obj,DefaultObjectTypePropertyName,Remove)删除用户定义的属性默认值 DefaultObjectTypePropertyName的表示为“Default+对
33、象名+属性名”,例如线对象的线条宽度为“DefaultLineLineWidth”。22【例例68】图形句柄%exm06_08.mclf;shg,%显示图形窗显示图形窗t=(pi*(0:1000)/1000);%自变量取值自变量取值y1=sin(t);%产生正弦函数产生正弦函数y12=sin(t).*sin(10*t);%生成调制波生成调制波line1=line(t,y12);%创建线创建线line2=line(t,y1);line3=line(t,-y1);axis(0,pi,-1,1);%设置坐标范围设置坐标范围set(line1,color,g,linewidth,3)%设置线对象的属性
34、设置线对象的属性set(line2,linestyle,:,color,c,linewidth,3)set(line3,linestyle,:,color,m,linewidth,3)disp(图柄图柄 轴柄轴柄),disp(gcf gca)%显示当前图形窗和轴的句柄显示当前图形窗和轴的句柄h=findobj(line1)%获取线对象获取线对象line1的句柄的句柄get(line3)%获取句柄对象获取句柄对象line3所有属性的当前值所有属性的当前值view(44,73)%设置视点方位角设置视点方位角44度,俯视角度,俯视角37度度grid on%画出分格线画出分格线box on%画出坐标框
35、画出坐标框legend(y,y1,-y1)%建立图例建立图例23图柄 轴柄 1.0000 101.0013h=100.0021Color=1 0 1EraseMode=normalLineStyle=:LineWidth=3Marker=noneMarkerSize=6MarkerEdgeColor=autoMarkerFaceColor=noneXData=(1 by 1001)double arrayYData=(1 by 1001)double arrayZData=BeingDeleted=offButtonDownFcn=Children=Clipping=onCreateFcn=DeleteFcn=BusyAction=queueHandleVisibility=onHitTest=onInterruptible=onParent=101.001Selected=offSelectionHighlight=onTag=Type=lineUIContextMenu=UserData=Visible=on小结小结1)掌握基本的绘图指令 plot,stem,ezplot,surf,mesh,plot3,subplot2)熟悉图形标识操作及常用的图形标识格式3)掌握图形窗功能及应用4)了解图形句柄24
限制150内