《教学课件第五讲matlab句柄绘图》由会员分享,可在线阅读,更多相关《教学课件第五讲matlab句柄绘图(46页珍藏版)》请在金锄头文库上搜索。
1、第五讲 matlab句柄绘图matlab语言的句柄绘图可以对图形各基本对象进行更为细腻的修饰,可以产生更为复杂的图形,而且为动态图形的制作奠定了基础。高层绘图与底层绘图的区别高层绘图函数是对整个图形进行操作的,图形每一部分的属性都是按缺省方式设置的,充分体现了matlab语言的实用性。底层绘图函数可以定制图形,对图形的每一部分进行控制,用户可以用来开发用户界面以及各专业的专用图形。充分体现了matlab语言的开发性一、什么是句柄图形句柄图形:利用底层绘图函数,通过对对象属性的设置(Handle Graphics)与操作实现绘图。句柄图形中所有图形操作都是针对图形对象而言的。句柄图形充分体现了面
2、向对象的程序设计。句柄图形的功能v句柄图形可以随意改变matlab生成图形的方式。v句柄图形允许你定制图形的许多特性,无论是对图形做一点小改动,还是影响所有图形输出的整体改动。v句柄图形的特性高层绘图函数是无法实现的二、图形对象和句柄1.图形对象 图形系统中最基本、最底层的单元 引例:x=0:2*pi/180:2*pi;y1=sin(2*x);y2=cos(2*x);plot(x,y1,x,y2)父对象子对象图形对象的基本要素以根屏幕为先导图形对象之间的关系为父代与子代的关系窗口1窗口n窗口2界面控制界面菜单轴线面字块像根屏幕根屏幕说明:根:图形对象的根,对应于计算机屏幕,根只有一个,其它所有
3、图形对象都是根的后代。图形窗口: 根的子代,窗口的数目不限,所有图形窗口都是根屏幕的子代,除根之外,其它对象则是窗的后代。界面控制:图形窗口的子代,创建用户界面控制对象,使得用户可采用鼠标在图形上作功能选择,并返回句柄。界面菜单: 图形窗口的子代,创建用户界面菜单对象 轴:图形窗口的子代,创建轴对象,并返回句柄,线面字块像的父辈线:轴的子代,创建线对象面:轴的子代,创建块对象字:轴的子代,创建字对象块:轴的子代,创建块对象像:轴的子代,创建图像对象窗口对象线对象轴对象面对象轴对象像对象块对象线对象文字对象2.创建图形对象的底层函数figure创建图形窗口调用格式: h=figure(n) n为
4、窗口序号uicontrol图形界面控制调用格式: h=uicontrol(property,value)property/value确定控制类型uimenu创建用户界面菜单调用格式: h=uimenu(property,value)property/value 确定菜单形式。axes 创建轴对象 h=axes(property, ) 定义轴对象的位置与大小 left, bottom width,heightline 创建线对象 h=line(x,y,z)patch 创建块对象 h=patch(x,y,z,c) x,y,z定义多边形,c确定填充颜色。surface 创建面对象 h=surface
5、(x,y,z,c) x,y,z三维曲面坐标,c颜色矩阵。 二维画线 三维画线image 显示图象 h=image(x); x为图像矩阵text 标注文字 h=text(x,y,string) 每个底层函数只能创建一个图形对象,并将它们置于适当的父辈对象中。确定标注位置标注字符串3.图形对象的属性 图形对象是由属性来描述的例如: figure 大小位置 1 1 640 480 颜色 0 0 0 省缺 line a. x, y 数据;b. 线的颜色 c. 线型; d. 线宽在高层绘图中对图形对象的描述一般是省缺的或由高层绘图函数自动设置的,因此对用户来说几乎是不透明的。但句柄绘图中上述图形对象都是
6、用户需要经常使用的,所以要作到心中有数,用句柄设置图形对象的属性。什么是句柄? 句柄是图形对象的标识代码,标识代码含有图形对象的各种必要的属性信息。各图形对象的句柄数据格式: 根屏幕 0 图形窗口 整数,表示图形窗口数 其它对象 对应的符点数4.句柄(handle)与句柄操作 所有能创建图形对象的matlab函数都可给出所创建图形对象的句柄例:创建1号窗口,返回句柄 h=figure(1) h=1 返回值为窗口号数例:h=lien(1:6,1:6)创建线对象的同时也建立了一个唯一的句柄 变量h是句柄值符点数句柄属性的设置与修改get: 获得句柄图形对象的属性和返回某些 对象的句柄值set: 改
7、变图形对象的属性专用函数:gcf:当前窗口对象的句柄 Get Current Figuregca:当前轴对象的句柄 Get Current Axes二、图形对象属性的获得与设置操作格式:h=gcf 将当前窗口对象的句柄返回hget(h)或get(gcf) 查阅当前窗口对象的 属性delete(gcf) 删除当前窗口的属性例:h=line(x,y)1.get(h)2.get(get(gca,children) 轴的子代例:创建一个线对象并返回线对象的句柄值 h1=line(0:10,0:10)h1 = 57.0001h1为句柄的代码值查阅线对象的属性名称和属性值get(h1)Color = 1
8、1 0EraseMode = normalLineStyle = -LineWidth = 0.5MarkerSize = 6Xdata = (1 by 11) Ydata = (1 by 11) Zdata = ButtonDownFcn = Children = Clipping = onInterruptible = noParent = 56.0001Type = lineUserData = Visible = on根据轴是线对象的父代,可查轴的句柄 get(gca)可查色序get(gca,colororder)get(gca,colororder)ans =ans = 1 1 0
9、1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1设置线条和窗口的颜色set(h1,color,1 0 0)set(h1,color,1 0.5 0)set(gcf,color,0.5 0.5 0.5)set(gcf,color,0.5 0.6 0.8)例:作正弦、余弦曲线,将正弦曲线改为虚线,将余弦曲线幅度减为1/2高度,如何用句柄实现。x=0:2*pi/180:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,x,y2,x,zeros(size(x) ),w:)首先查询各对象的属性get(g
10、cf)get(gcf) h=get(gcf,children)h=get(gcf,children)h =h = 60.0004 60.0004hh=get(gca,children)hh=get(gca,children)hh =hh = 70.0004 70.0004 69.0004 69.0004 68.0004 68.0004修改属性y11=get(hh(2),ydata);y22=y11/2;set(hh(2),ydata,y22)set(hh(3),linestyle,:) 控制一个图形对象是通过句柄实现的,具体是通过句柄操作函数get,set将某对象句柄属性作设置与修改。1.对象
11、属性的直接操作 对象属性的直接操作是通过当前句柄来实现的,所以首先要获得当前句柄值以及对象的属性,然后再查询或修改。三、对象的属性操作get(h)get(h, propertyname)set(h)set(h,propertyname,value)set(h,属性名称,新属性) color, r linestyle, : figurecolor, m2.对象属性的继承操作对象属性的继承操作是通过父代对象,设置省缺对象属性来实现的。父代句柄属性中设置省缺值后,所有子代对象均可以继承该属性的省缺值。属性省缺值的描述结构为: Dfault+对象名称+对象属性如:如:DefaultFigureColo
12、rDefaultFigureColor 图形窗口的颜色图形窗口的颜色 DefaultAxesAspaceRatio DefaultAxesAspaceRatio 轴的视图比率轴的视图比率 DefaultLineLineWide DefaultLineLineWide 线的宽度线的宽度 DefaultLineColor DefaultLineColor 线的颜色线的颜色 省缺值的获得与设置也是由get,set函数实现的例例: : get(0,DefaultFigureColor) get(0,DefaultFigureColor) 获得图形获得图形 窗口的省缺值窗口的省缺值 set(h,Defa
13、ultLineColor,r) set(h,DefaultLineColor,r) 设置线的设置线的 颜色为红色颜色为红色例:在图上添加文字注释,颜色为红色例:在图上添加文字注释,颜色为红色 set(gca,DefaultTextColor,1 0 0) set(gca,DefaultTextColor,1 0 0) gtext( gtext(正弦正弦) ) gtext( gtext(余弦余弦) )在在轴对象上设置字对象的颜色轴对象上设置字对象的颜色省缺值为红色省缺值为红色继承该省缺值继承该省缺值在图上添加红色的文字注释在图上添加红色的文字注释 例:在轴对象上(父代对象)设置线的颜色省缺值为红
14、色x=0:2*pi/180:2*pi;y=sin(2*x);set(gca,DefaultLineColor,1 0 0);h=line(x,y)h = 68.0001set(h,color,default)例:x=0:2*pi/180:2*pi;y=sin(2*x); h=line(x,y) set(0,DefaultFigureColor,0.5 0.5 0.5) 将所有新图形窗口的颜色由省缺值黑色设置为适中的灰色set(h,color,m,linewidth,2,linestyle,*)set(h,color,m,linewidth,2,linestyle,*)? ?set(0,defa
15、ultfigurecolor,b)set(0,defaultfigurecolor,b)set(0,defaultaxescolor,g)set(0,defaultaxescolor,g) h=line(x,y) h=line(x,y)set(h,color,r)set(h,color,r)set(gca,xcolor,w)set(gca,xcolor,w)set(gca,ycolor,w)set(gca,ycolor,w)h=surf(peaks(30)set(0,defaultsurfaceedgecolor,w)set(h,edgecolor,default)4.其它操作default
16、由父代继承factory 厂家设定省缺值remove 清除设定省缺值例:set(gca,defaultlinecolor,remove) set(h,color,factory)注意:plot,line命令遵循colororder色序对设置省缺值无效,四、其他功能介绍菜单函数menu K= MENU(HEADER, ITEM1, ITEM2, . )K= MENU(HEADER, ITEM1, ITEM2, . ) 例:例: K = nemu(K = nemu(请选择请选择,plot,mesh,surf),plot,mesh,surf)GuideUimenu:设计GUI菜单函数 UIMENU(PropertyName1,value1, PropertyName2,value2,.)Uicontrol:用来在图形窗口中建立控件 UICONTROL(PropertyName1, value1,PropertyName2,value2,.) 5.matlab5属性编辑器Propedit - 打开属性编辑器小 结熟悉图形对象句柄与句柄操作掌握图形对象属性的查询与操作能够任意设置图形对象的属性