1、第4章 MATLAB 绘图 (3),数学软件与数学实验-山东师范大学数学科学学院,2/58,4.4 句柄图形,4.4.1句柄图形体系1 图形对象和句柄 图形对象是一组紧密相关、形成惟一整体的子对象的集合,并且子对象可以被单独地操作。 在创建每一个图形对象时,都为该对象分配惟一的一个数值,称为图形对象句柄。句柄是图形对象的惟一标识符,不同对象的句柄是不同的。,数学软件与数学实验-山东师范大学数学科学学院,3/58,2 图形对象的继承关系,由图形创建函数产生的每一个对象都是图形对象,包括图形窗口、坐标轴、线条、曲面和文本,这些对象按父对象和子对象组成层次结构。 计算机屏幕是根对象,并且是所有其他对
2、象的父对象。 图形窗口是根对象的子对象,坐标轴和用户界面对象是图形窗口的子对象,线条、文本、曲面、贴片和图像对象是坐标轴对象的子对象。,数学软件与数学实验-山东师范大学数学科学学院,4/58,4.4.2 图形对象的建立,1 图形窗口对象 figure figure(n) h=figure h=figure(PropertyName1, PropertyValue1,PropertyName2, PropertyValue2,)功能:建立图形窗口并设置指定属性的属性值,将句柄值赋给句柄变量h。 常用的属性有:Menubar,Name,NumberTitle,Resize,Position,等等。
3、,数学软件与数学实验-山东师范大学数学科学学院,5/58,要关闭图形窗口,使用close函数,调用格式为: close(h) 功能:关闭句柄为h的图形窗口。 close all 功能:关闭所有的图形窗口。注意clf命令则是清除当前图形窗口的内容,但不关闭窗口。,数学软件与数学实验-山东师范大学数学科学学院,6/58,例4-40 建立一个图形窗口。该图形窗口没有菜单条,名称为“x2.”,大小为300300像素点,背景颜色为红色,窗口的左下角在屏幕的(100,100)位置(单位:像素)鼠标键按下响应事件为在该图形窗口绘制出y=x2的曲线。 syms x hf=figure(Name,x2,Colo
4、r,r,menubar,none,Position,100,100,300,300,Units,pixel,WindowButtonDownFcn,ezplot(x,x2,-4,4);,数学软件与数学实验-山东师范大学数学科学学院,7/58,2 坐标轴对象,axes:建立坐标轴对象 a=axes(PropertyName1, PropertyValue1 ,PropertyName2, PropertyValue2,)功能:用指定的属性在当前图形窗口创建坐标轴,并将其句柄值赋给句柄变量a。 axes 或 a=axes功能:按默认的属性值在当前图形窗口创建坐标轴。 常用的属性有:Box、Grid
5、LineStyle、Position、Units、Title,数学软件与数学实验-山东师范大学数学科学学院,8/58,例4-44 建立坐标轴,位置为0.1,0.1,0.6,0.6,在此坐标轴上绘制y=sin(x)的函数曲线。 axes(position,0.1 0.1 0.6 0.6) x = 0 : 0.01 : 2 * pi; y = sin(x); plot(x, y),数学软件与数学实验-山东师范大学数学科学学院,9/58,3 曲线对象,line:建立曲线对象 L=line(x,y,z,PropertyName1, PropertyValue1,PropertyName2, Prope
6、rtyValue2,)功能:绘制曲线,并将句柄值赋给句柄变量L,其中x,y,z的含义与高层绘图函数plot和plot3等一样。,数学软件与数学实验-山东师范大学数学科学学院,10/58,例4-45 绘制正弦曲线,并分别用单元数组和结构数组设置对象属性。 x=0:pi/12:2*pi;y=sin(x); subplot(1,2,1);PN=Color,LineWidth,Marker,MarkerEdgeColor,MarkerFaceColor;PV=1 0 0,2,d,k,g; line(x,y,PN,PV) %设置颜色、线宽、标记形状、标记点边缘颜色、标记点填充颜色 axis square
7、 ,grid on subplot(1,2,2);PS.Color=1 0.7 0;PS.LineWidth=2;PS.Marker=s ; line(x,y,PS); %设置颜色、线宽属性 axis square,grid on,数学软件与数学实验-山东师范大学数学科学学院,11/58,4 文字对象,text:建立文字对象的函数 t=text(x,y,z,说明文字,PropertyName1, PropertyValue1,PropertyName2, PropertyValue2,)功能:在指定位置和以指定的属性值添加文字说明,并保存句柄值为t。说明文字中除使用标准的ASCII字符外,还可
8、使用LaTeX格式的控制字符。常用属性有Color(颜色)、String(字符串)、Interpreter(注释)、FontSize(字体大小)和Rotation(旋转)等。见例4-8,数学软件与数学实验-山东师范大学数学科学学院,12/58,5 曲面对象,surface:建立曲面对象 s=surface(x,y,z,PropertyName1, PropertyValue1,PropertyName2, PropertyValue2,)功能:建立句柄值为s的曲面对象。其中对x,y,z的含义与曲面绘制函数mesh和surf等一样。例4-46 利用曲面对象绘制三维曲面,数学软件与数学实验-山东师
9、范大学数学科学学院,13/58,4.4.3 对象句柄的获取方法,句柄值的获取方法: 1)追溯法获取句柄 h_pa=get(h_known,parent) 功能:获取h_known的父对象句柄值,并赋给h_pa。 h_ch=get(h_known,children) 功能:获取h_known的子对象的句柄值,并赋给h_ ch。,数学软件与数学实验-山东师范大学数学科学学院,14/58,2)当前对象句柄的获取,Hf_fig=gcf 功能:返回当前图形窗口的句柄值,并赋给Hf_fig,Ha_ax=gca 功能:返回当前图形的当前坐标轴的句柄值,并赋给Ha_ax。,Hx_obj=gco 功能:获取当前
10、对象的句柄值,并赋给Hx_obj。,Hx_obj=gco(Hf_fig) 功能:返回句柄值为Hf_fig的图形中当前对象的句柄值。,数学软件与数学实验-山东师范大学数学科学学院,15/58,3) 根据对象特性获取句柄,h= findobj功能:获取根对象和所有子对象的句柄值,并赋给h。 h= findobj (ObjectHandles)功能:获取句柄为ObjectHandles对象中列出的对象和它们的子对象的句柄值,并赋给H。 h=findobj(h-ori,PropertyName, PropertyValue) h=findobj (PropertyName, PropertyValue
11、,)功能:获取根和根以下以属性二元对(PropertyName, PropertyValue)指定属性值的对象的句柄值,并赋给h。 例4-44 绘制三维网格图,并用追溯法返回图形窗的句柄。,数学软件与数学实验-山东师范大学数学科学学院,16/58,4.4.4 对象属性的获取和设置,句柄图形建立后,应用函数get和set获取和设置对象的属性。 get(h_obj) 获取句柄对象所有属性的当前值get(h_obj, PropertyName) 获取句柄对象h_obj的属性名为PropertyName的当前值 set(h_obj) 显示句柄对象所有属性和属性值。 set(h_obj, Propert
12、yName) 设置句柄对象指定属性名的属性值,数学软件与数学实验-山东师范大学数学科学学院,17/58,set(h_obj, PropertyName, PropertyValue )设置句柄对象指定属性名的属性值,set(h_obj, PropertyStructure) 用结构数组设置句柄对象指定属性的属性值,get(h_obj, DefaultObjectTypePropertyName)获取对象属性的默认值,set(h_obj, DefaultObjectTypePropertyName, PropertyValue) 设置属性的用户定义默认值,set(h_obj, DefaultObjectTypePropertyName, Remove) 删除属性的用户定义默认值,数学软件与数学实验-山东师范大学数学科学学院,18/58,例4-45 创建背景为红色的图形窗口,绘制函数 的函数图像,并利用句柄设置坐标轴对象,曲线对象属性,并对曲线注释。,