http://blog.sina.com.cn/s/blog_4b9b714a0100cce2.html
这两天在看句柄式图形方面的东西,以下是我在看书过程中整理的学习笔记,比较详细的介绍了句柄以及与其密切相关的各种图形对象和它们的属性。希望能对初学Matlab界面设计的朋友们有所帮助。
GUI学习笔记:
句柄式图形常用函数:
(1)get(h)返回句柄值h所指定的图形对象的所有属性名称与相对应的属性值
(2)a = get(h)返回由句柄值h所指定的图形对象的属性结构数组,并且该数组的字段名称就是该对象的属性名称。
(3)a = get(0,'factory')返回所有能由用户设置的属性的默认定义值。
(4)a = get(0,'FactoryObjectTypePropertyName1','FactoryObjectTypePropertyName2',...)返回指定对象类型指定的属性值,输入参数FactoryObjectTypePropertyName为一个关键词,由字符Factory与图形对象类型(如Figure)还有属性名称(如Color)组成。
a = get(0,'factoryFigureColor')返回Figure对象的Color属性值。
(5)a = get(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName1',...)返回句柄值为h的对象指定属性的默认值。如“DefaultFigureColor”。
(6)a = get(h,'default')列出h对象的所有属性的默认属性值
(7)a = set(h)返回句柄值h所指定的图形对象的所有属性名称对应的可设置属性值,a为结构数组,存储对象的属性名称,其字段值为相对应的属性值。属性值中用{}括起来的表示默认值。
(8)set(h,a)使用指定的属性值来设置由句柄值h所指定的对象属性,a为结构数组,其字段名称为对象的属性名称,字段值为相对应的属性值。
(9)a = set(0,'factory')返回那些用户可以设置默认值的所有对象的属性,同时显示可设置的属性值。
(10)a=set(0,'FactoryObjectTypePropertyName')返回所有对象中指定的属性名称FactoryObjectTypePropertyName的所有可能的属性值。
(11)a = set(h,'属性名','属性值')设置句柄值为h的对象的与属性名对应的属性值。
(12)set(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName2',...)对句柄值为h的对象设置特定属性名称的属性默认值。
(13)H = findobj;返回Root对象与其所有子对象的句柄值
(14)H = findobj(h);返回h变量的句柄值
(15)H = findobj(’属性名称‘,’属性值‘);依据对象的属性名称和属性值找出匹配的对象句柄值。
(16)H = findobj(ObjectHandles,’属性名称‘,’属性值‘);根据限定的对象列表找出与对象的属性名称和属性值匹配的对象句柄值
(17)gcf返回当前Figure对象的句柄值
gca返回当前axes对象的句柄值
gco返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab会把当前图形对象的句柄值存放在Figure的CurrentObject属性中
Figure对象的属性篇
(1).^是矩阵每个元素的幂乘,^是数的幂乘。
(2)set(handle)列出句柄值为handle的对象的所有属性
get(handle)除列出上述属性外,还列出可以设置的属性
reset(handle)将所有属性改为默认值
delete(handle)删除句柄值为handle的图形对象
(3)利用set(handle,‘属性名称’)获得句柄值为handle的对象的属性名称下所有可设置的属性值
set(gcf,'units):得到[ inches | centimeters | normalized | points | {pixels} | characters ],其中,大括号中是默认值
(4)clf reset;将窗口关闭,并重新设置其属性为默认值。
(5)Closerequestfcn,有效值为字符串或函数句柄(前加@)
当关闭绘图窗口或离开Matlab时,就会定义Closerequestfcn定义的函数
(6)createfcn,当Matlab建立一个对象时(如为figure对象,即打开一个绘图窗口),就会触发createfcn所定义的callback程序。如set(0,'defaultfigurecreatefcn','set(gcbo,''integerhandle'',''off'')');即设置了根对象的默认值,使每次建立figure对象时,都会指定一个非整数的句柄值。(在用户未指定句柄值时)
(7)将当前窗口中在键盘上按下的按键名显示出来。
set(gcf,'keypressfcn','get(gcf,''currentcharacter'')')
(8)color有效值为colorspec
colorspec表:
RGB 简称
[110] y_yellow
[101] m_magenta
[011] c_cyan
[100] r_red
[010] g_green
[001] b_blue
[111] w_white
[000] k_black
(9)linspace(a,b,c):a初始b结束c线性分段次数linspace(a,b)则默认100次
(10)CurrentObject:有效值为图形对象句柄值:返回绘图窗口内当前被鼠标选取的对象的句柄值
(11)currentPoint:有效值[x-坐标,Y-坐标]返回绘图窗口中最后单击鼠标的位置,用get(gcf,'currentpoint')就会返回当前在窗口中单击鼠标的位置
(12)DeleteFcn:有效值:字符串或函数句柄,删除对象(这里为figure)时会触发Deletefcn所定义的Callback程序。
(13)Dockcontrols:有效值为on/off,默认值on,控制窗口的嵌入效果是否可用。
(14)Hittest:有效值on/off,决定能否用鼠标选取对象为当前对象。
(15)Integerhandle:有效值on/off,决定Figure对象句柄值的类型为整数或浮点小数。
(16)Interruptible:有效值on/off,执行过程中需要中断程序而优先执行其他程序时要设该属性为on。即Interrupptible属性是用以控制当Callback执行时是否能被其他事件(如此时鼠标按下其他控制对象)而中断,on是会中断,off时会执行完当前Callback,再去执行其他Callback。
(17)Keypressfcn:有效值为字串或函数句柄。当用户在figure窗口中按下键盘的任意键时,就会执行Keypressfcn所定义的Callback程序。
figure('keypressfcn','fprintf(''当前按下键盘上的%c键\n'',get(gcf,''currentcharacter''))')在这个figure窗口中按下键盘上的按键时就会立即返回对应的字符,依据这个效果就可以决定当字符键被按下时所要执行的操作。
当这个属性指定的值是一个函数句柄时,Matlab就会将这个函数视为一个结构,包含下列字段——character(以当前键盘上按下的按键显示的字符来当作结果),modifier(包含一个或多个识别键盘上按下按键字符名称的细胞数组(如Ctrl,Alt,Shift等),key(显示被按下的键)。
(18)WindowButtonDownFcn:有效值为字符串或函数句柄
当鼠标在绘图窗口内按下鼠标任意键时,将触发WindowButtonDownFcn所定义的Callback以产生相对应的操作。
(19)WindowButtonMotionFcn:有效值为字符串或函数句柄
当鼠标在绘图窗口内按住鼠标任意键移动,将触发WindowButtonMotionFcn所定义的Callback以产生相对应的操作。
(20)WindowButtonUpFcn:有效值为字符串或函数句柄
当鼠标在绘图窗口内释放鼠标任意键时,将触发WindowButtonUpFcn所定义的Callback以产生相对应的操作。
(21)CurrentAxes有效值为当前坐标轴的句柄值,返回当前的坐标轴句柄值。假设某坐标轴句柄值为a_h,可以使用axes(a_h)或set(gcf,'currentaxes',a_h)这两种方式,制定句柄值为a_h的坐标轴为当前坐标轴。
(22)CurrentCharacter:有效值为任意字符,返回用户在绘图窗口中最后输入的一个字符,即刚在键盘上按下的字符键将存储到Currentcharacter中,一般于Keyppressfcn合用。
(23)Currentobject有效值为图形对象的句柄值,返回绘图窗口内当前被鼠标选取的对象的句柄值。
(24)有效值为两元素的向量,[X坐标,Y坐标]
返回绘图窗口中最后单击鼠标的位置,与Windowbuttonmotionfcn,Windowbuttonupfcn合用。使用get(gcf,'currentpoint')就会返回当前在窗口中单击鼠标的位置。
Axes对象的属性
(1)title('new','color','r');给坐标轴命名为new,红色
title({'this title','has 2 '});命名为两行的标题
(2)Units:有效值为pixels/normalized/inches/centimeters/points/characters
决定各种位置属性的度量单位,相对于窗口左下角为基准。当设置为Pixels时,以像素为单位;当设置为normalized时,以坐标为单位,屏幕的左下角为[0,0],右上角为[1.0,1.0]。
(3)grid on:在图像中显示网格。
(4)children:控制axes对象的子对象,即image\light\line\patch\rectangle\surface和text等对象,可通过get(gca,'children')来返回当前坐标轴的子对象构成的句柄值向量。
(5)字体属性:
Fontangle字体角度(正常normal或斜体italic/oblique)
Fontname字体名称
fontsize字体大小(单位由Fontunits决定)
fontunits字体单位(points/normalized/inches/centimeters/pixels)
fontweight字体粗细(normal/bold/light/demi)
gridlinestyle决定坐标轴网格线的样式,‘-’为实线‘- -’为虚线‘:’为点线‘-.’为点虚线
plot(1:10);grid on;set(gca,'gridlinestyle','-.');将当前坐标轴显示的网格线为点-虚线
(6)linewidth 定义X,Y和Z轴的轴线宽度(以点单位定义)
(7)NextPlot:有效值为add|replace|replacechildren,默认为replace
add表示使用当前的坐标轴,把新的图形对象加到此坐标轴中是一般保留的做法,replace表示重新设置坐标轴的所有属性(Position除外),也就是在绘图前会删除当前坐标轴和它的子对象。replacechildren表示移除当前坐标轴中所有子对象,但不重新设置坐标轴的所有属性
(8)Outerposition决定坐标轴外边界的位置。由位置向量[left,bottom,width,height]组成,其中left,bottom表示相对于绘图窗口左下角的位置,width,height表示区域尺寸,默认为[0 0 1 1]
(9)Position由位置向量[left,bottom,width,height]组成,决定坐标轴位置
(10)Tag定义本坐标轴的卷展栏,因为每一个对象都有自己唯一的识别码即tag,以方便findobj函数查找坐标轴句柄值。
(11)visible决定坐标轴是否可见
(12)set(gca,'xgrid','on')绘制X轴垂直网格线
set(gca,'gridlinestyle',':','linewidth',3)设置网格线线条类型和宽度
set(gca,'box','on')将图轴方框绘制出来
(13)set(gca,'xscale','linear');将X轴刻度设为线性
set(gca,'yscale','log');将Y轴刻度设为对数
(14)disp()显示一个数组,但不显示其数组名称
disp(' Corn Oats Hay')
disp(rand(5,3))
which results in
Corn Oats Hay
0.2113 0.8474 0.2749
0.0820 0.4524 0.8807
0.7599 0.8075 0.6538
0.0087 0.4832 0.4899
0.8096 0.6135 0.7741
Pause:pause, by itself, causes M-files to stop and wait for you to press any key before continuing.
实例:plot(1:10);set(gca,'yscale','log');
disp('请按下Enter键');
pause
set(gca,'Yscale','linear');本例是说按下Enter键将Y轴刻度由对数改为线性。
(16)Xtick,Ytick,Ztick:控制X,Y,Z轴坐标刻度记号的位置,即控制坐标轴上刻度记号的位置以及每隔多少值会到下一个刻度记号的位置,同时还需要配合Xticklabel、Yticklabel、Zticklabel属性来调整。详细见例程。
以下设置方式相同:
set(gca,'Xticklabel',{'1';'10';'100'})
set(gca,'Xticklabel','1|10|100')
set(gca,'Xticklabel',[1;10;100])
set(gca,'Xticklabel',['1 ';'10 ';'100'])
(17)Findobj:查找
Line对象
当用户建立一个线对象时,就会触发Createfcn所定义的Callback产生相对应的操作;同样,若删除一个线对象时,就会触发DeleteFcn所定义的Callback产生相对应的操作。以下程序建立一个线对象,并设置DeleteFcn为一个问题对话框,当删除该线对象时,就会显示其问题对话框来询问用户。
(1) clipping:有效值为on/off,默认值为on
设置坐标轴土筐是否可以剪辑,如果设为off,则绘制线对象时可超出坐标轴的图框。
(2)Linewidth:有效值为纯量(与向量相对,只有大小而无方向),点为单位。
(3)Marker:有效值为字符,决定Line对象的记号类型,有+,o,*,.,x,s,d,等
(4)Markersize:有效值为纯量,单位为点,Marker的大小。
(5)UIcontextmenu:有效值为uicontextmenu对象的句柄值,定义与线对象相关联的uicontextmenu菜单,因此当用户将该线对象的属性UicontextMenu设置为相关联的uicontextmenu对象的Tag名称时,uicontextmenu就可以在该线对象上单击鼠标右键来显示uicontextmenu菜单。
(6)Tag:有效值为字符串,定义改线对象的卷展栏(即标记)
(7)Type:有效值为字符串(只读),此处为’line‘字符串。
(8)Xdata,Ydata,Zdata:有效值为坐标数组,指定产生线条的数据点,若为2D环境则Xdata、Ydata需要有相同数目的数据,而Zdata为空矩阵;3D环境则Xdata,Ydata,Zdata三者都需要有相同数目的数据。
例:x=0:5,y=x+10;line('xdata',x,'ydata',y);
Patch对象
patch函数不想其他高级区域建立函数(fill和area),只是简单地将patch对象添加到当前坐标轴中而已。
使用:patch(X,Y,C)
在当前的坐标轴中添加二维填充的patch对象,X和Y用以定义patch对象顶点的位置,若X,Y为矩阵,则Matlab按每一行的元素来产生多个多边形。
例:x = [0 0;0 1;1 1];
y = [1 1;2 2;2 1];
z = [1 1;1 1;1 1];(x(1,1),y(1,1),z(1,1)为第一个面的第一个顶点,x(2,1),y(2,1),z(2,1)为第一个面的第二个顶点,以此类推)
tcolor(1,1,1:3) = [1 1 1];
tcolor(1,2,1:3) = [.7 .7 .7];
patch(x,y,z,tcolor);(tcolor是一个1*2*3的三维矩阵)
Surface对象
surface可以建立一个surface对象,surface是由矩阵数据所在的列索引值为X坐标,而行索引值为Y坐标,并且矩阵的每个元素值为Z坐标。
image对象
image(C)将矩阵C当作一个图像来显示,C的每一个元素定义一个图像中矩阵线段的颜色。
image(x,y,C)其中x与y为2元素的向量,分别指定X轴与Y轴卷展轴的范围。C为图像矩阵。
text对象
(1)text(x坐标,y坐标,'string')在图形中指定位置(x,y)显示字符串string。
(2)Editing有效值为on/off,off时,用户在执行GUI操作时无法直接在该Text对象上进行编辑,改为on后,可以进行编辑。
(3)HorizontalAlign 有效值为left/center/right决定Text对象中字符水平方向的对齐方式。
(4)Interpreter有效值为tex/none,决定Text对象中是否可用Tex字符注释,当设置为Tex时,表示允许用户能够在String属性下输入Tex字符。以下为在窗口的 [.5 .5]点位置处建立一个text对象并且字体大小以16点来表示的一个方程式。(显示的是一个二重积分)
text('interpreter','latex','string','$$\int_0^x\!\int_y dF(u,v)$$','position',[.5 .5],'fontsize',16)
(5)String有效值为字符串,表示要显示出来的字符串是什么。
(6)verticalAlignme 有效值为top/cap/middle/baseline/bottom决定Text对象垂直对齐的方式。
下面加载一个例子,是ilovematlab论坛一个斑竹的回复
x=0:0.5:10;
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,'r',x,y2,'g')
>> findobj(gca,'color','r')
不想要的曲线直接delete句柄就可以了
21:44 | 添加评论 | 阅读评论 (2) | 固定链接 | 写入日志
2009/3/25
matlab绘图与图形处理(下)
7.3 通用图形函数命令
7.3.1 图形对象句柄命令
命令1 figure
功能 创建一个新的图形对象。图形对象为在屏幕上单独的窗口,在窗口中可以输出图形。
用法 figure 用缺省的属性值创建一个新的图形对象。
figure('PropertyName',PropertyValue,…) 对指定的属性PropertyName用指定的属性值PropertyValue(属性名与属性值成对出现)创建一个新的图形窗口,对于那些没有指定的属性,则用缺省值。属性名与有效的属性值见下表。
figure(h) 1. 若h为一个已经存在的图形的句柄,则figure(h)使由h标记的图形成为当前图形,使它可见,且在屏幕上把它显示到所有图形之前。当前图形为图像输出的地方。
2. 若h不是已经存在图形的句柄,但是为一整数,则该命令生成一图形窗口,同时把该窗口的句柄赋值为h;若h不是一图形窗口的句柄,也不是一整数,则返回一错误信息。
h = figure(…) 返回图形窗口对象的句柄给h。
表7-10
属性名 | 属性说明 | 有效属性值 |
窗口位置 | ||
Position | 图形窗口的位置与大小 | 有效值:四维向量[left,bottom, width,height] 缺省值:决定于显示 |
Units | 用于解释属性Position的单位 | 有效值:inches(英寸) centimeters(厘米) normalized(标准化单位,认为窗口为一长宽都是1) points(点) pixels(像素) characters(字符) 缺省值:pixels |
指定类型与外在显示 | ||
Color | 窗口的背景颜色 | 有效值:ColorSpec(有效的颜色 参数) 缺省值:取决于颜色表(参见命令colordef) |
Menubar | 转换图形窗口菜单条的“开”与“关” | 有效值:none、figure 缺省值:figure |
Name | 显示图形窗口的标题 | 有效值:任意字符串 缺省值:‘’(空字符串) |
NumberTitle | 标题栏中是否显示’Figure No. n’,其中n为图形窗口的编号 | 有效值:on、off 缺省值:on |
Resize | 指定图形窗口是否可以通过鼠标改变大小 | 有效值:on、off 缺省值:on |
SelectionHighlight | 当图形窗口被选中时,是否突出显示 | 有效值:on、off 缺省值:on |
Visible | 确定图形窗口是否可见 | 有效值:on、off 缺省值:on |
WindowStyle | 指定窗口为标准窗口还是典型窗口 | 有效值:normal(标准窗口)、 modal(典型窗口) 缺省值:normal |
控制色图 | ||
Colormap | 图形窗口的色图 | 有效值:m*3阶的RGB颜色矩阵 缺省值:jet色图 |
Dithermap | 用于真颜色数据以伪颜色显示的色图 | 有效值:m*3阶的RGB颜色矩阵 缺省值:有所有颜色的色图 |
DithermapMode | 是否使用系统生成的抖动色图 | 有效值:auto、manual 缺省值:manual |
FixedColors | 不是从色图中获得的颜色 | 有效值:m*3阶的RGB颜色矩阵 缺省值:无(只读模式) |
MinColormap | 系统颜色表中能使用的最少颜色数 | 有效值:任一标量 缺省值:64 |
ShareColors | 允许MATLAB共享系统颜色表中的颜色 | 有效值:on、off 缺省值:on |
指定透明度 | ||
Alphamap | 图形窗口的α色图,用于设定透明度。 | 有效值:m*1维向量,每一分量在[0 1]之间 缺省值:64*1维向量 |
指定渲染模式 | ||
BackingStore | 打开或关闭屏幕像素缓冲区 | 有效值:on、off 缺省值:on |
DoubleBuffer | 对于简单的动画渲染是否使用快速缓冲 | 有效值:on、off 缺省值:off |
Renderer | 用于屏幕和图片的渲染模式 | 有效值:painters、zbuffer、OpenGL 缺省值:系统自动选择 |
关于图形窗口的一般信息 | ||
Children | 显示于图形窗口中的任意对象句柄 | 有效值:句柄向量
|
FileName | 命令guide使用的文件名 | 有效值:字符串 |
Parent | 图形窗口的父对象:根屏幕 | 有效值:总是0(即根屏幕) |
Selected | 是否显示窗口的“选中”状态 | 有效值:on、off 缺省值:on |
Tag | 用户指定的图形窗口标签 | 有效值:任意字符串 缺省值:' '(空字符串) |
Type | 图形对象的类型(只读类型) | 有效值:'figure' |
UserData | 用户指定的数据 | 有效值:任一矩阵 缺省值:[](空矩阵) |
RendererMode | 缺省的或用户指定的渲染程序 | 有效值:auto、manual 缺省值:auto |
关于当前状态的信息 | ||
CurrentAxes | 在图形窗口中的当前坐标轴的句柄 | 有效值:坐标轴句柄 |
CurrentCharacter | 在图形窗口中最后一个输入的字符 | 有效值:单个字符 |
CurrentOject | 图形窗口中的当前对象的句柄 | 有效值:图形对象句柄 |
CurrentPoint | 图形窗口中最后单击的按钮的位置 | 有效值:二维向量[x-coord, y-coord] |
SelectionType | 鼠标选取类型 | 有效值:normal、extended、alt、open |
回调程序的执行 | ||
BusyAction | 指定如何处理中断调用程序 | 有效值:cancel、queue 缺省值:queue |
ButtonDownFcn | 当在窗口中空闲点按下鼠标按钮时,执行的回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
CloseRequestFcn | 当执行命令关闭时,定义一回调程序 | 有效值:字符串 缺省值:closereq |
CreateFcn | 当打开一图形窗口时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
DeleteFcn | 当删除一图形窗口时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
Interruptible | 定义一回调程序是否可中断 | 有效值:on、off 缺省值:on(可以中断) |
KeyPressFcn | 当在图形窗口中按下一键时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
ResizeFcn | 当图形窗口改变大小时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
UIContextMenu | 定义与图形窗口相关的菜单 | 有效值:属性UIContrextmenu的句柄 |
WindowButtonDownFcn | 当在图形窗口中按下鼠标时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
WindowButtonMotionFcn | 当将鼠标移进图形窗口中时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
WindowButtonUpFcn | 当在图形窗口中松开按钮时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
访问对象的控制 | ||
IntegerHandle | 指定使用整数或非整数图形句柄 | 有效值:on、off 缺省值:on(整数句柄) |
HandleVisiblity | 指定图形窗口句柄是否可见 | 有效值:on、callback、off 缺省值:on |
HitTest | 定义图形窗口是否能变成当前对象(参见图形窗口属性CurrentObject) | 有效值:on、off 缺省值:on |
NextPlot | 在图形窗口中定义如何显示另外的图形 | 有效值:replacechildren、add、replace 缺省值:add |
定义鼠标指针 | ||
Pointer | 选取鼠标记号 | 有效值:crosshair、arrow、topr、watch、topl、botl、botr、circle、cross、fleur、left、right、top、fullcrosshair、bottom 、ibeam、custom 缺省值:arrow |
PointerShapeCData | 定义鼠标外形的数据 | 有效值:16*16阶矩阵 缺省值:将鼠标设置为'custom'且可见 |
PointerShapeHotSpot | 设置鼠标活跃的点 | 有效值:二维向量[row,column] 缺省值:[1 1] |
例7-46
>>scrsz = get(0,'ScreenSize');
>>figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])
执行上面的语句,会在屏幕的左上角生成一没有任何符号的窗口。
命令2 line
功能 生成线(line)对象。命令line在当前坐标轴中生成一个线对象。用户可以指定线的颜色,宽度,类型和标记符号等其他特性。
命令line 有两种形式:
1.自动循环使用颜色和类型。当用户用非正式语法来指定矩阵坐标数据:line(X,Y,Z),Matlab将循环使用由坐标轴ColorOrder和LineStyle指定的颜色顺序和类型顺序。
2.纯粹低级操作。当用户用属性名和属性值调用命令line:
line(‘XData’,x,’YData’,y,’ZData’,z)
Matlab将在当前用缺省的颜色(参见命令colordef的使用)画出线对象。注意一点的是,用户不能在命令line的低级形式中使用矩阵数据。
用法 line(X,Y) 在当前的坐标轴中画出由向量x和y定义的线条。若x与y为同型的矩阵,则对于x,y的每一列画出一线条。
line(X,Y,Z) 在三维空间中画出由x,y,z定义的线条。
line(X,Y,Z,'PropertyName',PropertyValue,…) 画出由参数x,y,z确定的线条,其中对指定属性PropertyName设置为PropertyValue,其他没有指定属性用缺省值。属性 LineStyle和Marker参见命令plot。
line('PropertyName',PropertyValue,…) 对属性用相应的输入参数来设置而画出线条。这是命令line的低级使用形式,此时不接受矩阵参数。除了该情形,其他形式都接受矩阵参数。
h = line(…) 返回每一条线的线对象对应的句柄向量。
表7-11
属性名 | 说明 | 有效属性值 |
定义对象的数据 | ||
Xdata | 定义线条的x-轴坐标参量 | 有效值:向量或矩阵 缺省值:[0 1] |
Ydata | 定义线条的y-轴坐标参量 | 有效值:向量或矩阵 缺省值:[0 1] |
Zdata | 定义线条的z-轴坐标参量 | 有效值:向量或矩阵 缺省值:[0 1] |
定义线型与数据点标记符 | ||
LineStyle | 定义线条的类型 | 有效值:-、--、:、、-.、 none 缺省值:-(实线) |
LineWidth | 定义线条的宽度(以磅为单位) | 有效值:一标量 缺省值:0.5磅 |
Marker | 定义标记数据点的标记符号 | 有效值:13种类型之一 缺省值:none |
MarkerEdgeColor | 定义标记颜色或可填充标记的边界颜色 | 有效值: auto、none、 ColorSpec 缺省值:auto |
MarkerFaceColor | 定义封闭形标记的填充颜色 |
|
MarkerSize | 定义标记大小 | 有效值:标量(磅) 缺省值:6(磅) |
控制线条的显示 | ||
Clipping | 坐标轴矩形区域是否可剪辑 | 有效值:on、off 缺省值:on |
EraseMode | 定义显示与擦除线条的方法(对于动画显示) | 有效值:normal、none、 xor、background 缺省值:normal |
SelectionHighlight | 当线条被选中时,是否突出显示 | 有效值:on、off 缺省值:on |
Visible | 定义线条是否可见 | 有效值:on、off 缺省值:on |
Color | 定义线条颜色 | 有效值:ColorSpec |
对象访问的控制 | ||
HandleVisibility | 定义线条句柄对其他函数是否可见 | 有效值:on、off、callback 缺省值:on |
HitTest | 定义线条能否成为当前对象 | 有效值:on、off 缺省值:on |
关于线条的一般信息 | ||
Children | 线条没有子对象 | 有效值:[](空矩阵) |
Parent | 线条对象的父对象为坐标轴对象 | 有效值:坐标轴句柄 |
Selected | 是否显示线条的“选中”状态 | 有效值:on、off 缺省值:on |
Tag | 用户定义的标签 | 有效值:任一字符串 缺省值:’’(空字符串) |
Type | 图形对象的类型(只读类型) | 有效值:'line' |
UserData | 用户定义的数据 | 有效值:任一矩阵 缺省值:[](空矩阵) |
与回调程序执行有关的属性 | ||
BusyAction | 定义如何处理回调中断程序 | 有效值:cancel、queue 缺省值:queue |
ButtonDownFcn | 当在线条上按下鼠标时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
CreateFcn | 当生成线条时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
DeleteFcn | 当删除线条时,定义一回调程序 | 有效值:字符串 缺省值:' '(空字符串) |
Interruptible | 定义回调程序是否可中断 | 有效值:on、off 缺省值:on(可中断) |
UIContextMenu | 定义与线条相关的菜单 | 有效值:UIContextMenu的句柄 |
例7-47
>>t = 0:pi/20:2*pi;
>>hline1 = plot(t,exp(t).*sin(t),'k');
>>hline2 = line(t+.06,exp(t).*sin(t),'LineWidth',4,'Color',[.8 .8 .8]);
>>set(gca,'Children',[hline1 hline2])
生成图形为图7-46。
图7-46 命令line画的函数图
例7-48
图7-47 随机直线图 |
>>line(rand(4,2),rand(4,2),rand(4,1))
>>line(rand(1,4),rand(1,4),rand(1,4))
>>line(rand(4,1),rand(4,1),rand(4,1))
>>line(rand(2,4),rand(2,4),rand(1,4))
>>line(rand(4,2),rand(4,2),rand(4,1))
生成图形为图7-47。
命令3 patch
功能 生成补片图形对象。该命令为生成补片图形对象的低级图形函数。补片为一个或多个多边形,多边形的顶点为坐标中的点。用户可以指定补片的颜色与光照模式。
用法 patch(X,Y,C) 在当前坐标轴中增加二维带填充模式的补片。参量X,Y确定顶点的位置。若X,Y为矩阵(同型或不同型),系统按列生成多个多边形。若x,y没有定义一封闭的多边形,则命令自动地将多边形封闭。参量x与y可以定义凹的或自身交叉的多边形。可是,一个不可分隔的补片的边界自身交叉,则不能完整填充。在这种情况下,最好是将多边形分解成几个小的、自身没有交叉的多边形。参量c指定每一补片的颜色,它可以为简单的ColorSpec,每面一颜色或每一顶点一颜色。若c为三维列向量,它将被认为是一直接指定的RGB颜色。
patch(X,Y,Z,C) 生成三维的补片对象。
patch(FV) 用结构FV生成一补片。结构FV包含这些域名vertices,faces和可选的facevertecdata,这些域名对应于补片的Vertices属性、Faces属性、FaceVertexCData属性。
patch(…,C,'PropertyName',PropertyValue…) 在二维(X,Y)或三维(X,Y,Z)空间中对补片指定的属性PropertyName设置为PropertyValue。
patch('PropertyName',PropertyValue…) 对所有指定的多个属性PropertyName设置为相应的值PropertyValue。该命令形式可以使用户免除颜色的指定,因为系统将使用缺省的面颜色和边界颜色,除非用户准确地对属性FaceColor与EdgeColor进行设置。该命令形式也允许用户通过对属性Faces与Vertices的设置来代替x-,y-与z-轴的输入。
handle = patch(…) 返回命令patch生成的补片对象句柄。
说明 函数patch不象其他的高级的区域生成函数,例如函数fill或area,它没有检测图形窗口与坐标轴的属性NextPlot的设置情形。它只是简单地在当前坐标轴中添加补片对象而已。
有两种指定颜色的补片属性名:
(1)Cdata——当指定x-,y-与z-轴坐标(XData,YData,ZData)时使用;
(2)FaceVertexCData——当指定多边形的顶点与连接矩阵时使用。
以上两个属性接受颜色数据作为索引颜色或者是真颜色(RGB)。其中索引颜色数据 能代表当前色图的直接索引或者代表映射到整个色图的线性数据的比例数值。
命令4 surface
功能 生成面对象。该命令是生成面图形对象的低级函数。面对象为由矩阵元素的A(I,j)所在的行下标I为x-坐标,所在的列下标j为y-坐标,元素值为z-坐标确定的点生成的空间多边形。
用法 surface(Z) 画出由矩阵z确定的曲面,其中z为定义在一几何矩形区域上的单值函数。
surface(Z,C) 画出颜色由c指定的、面由z指定的空间曲面。
surface(X,Y,Z) 曲面由参数x,y,z确定,颜色参数c=z,因此颜色能恰当地反映曲面的高度。
surface(X,Y,Z,C) 曲面由参数x,y,z确定,颜色由参数c确定。
Surface(x,y,Z) 参数x与y为向量,若[m,n]=size(z),则要求length(x)=n,length(y)=m,面上的点由(x(j),y(i),z(I,j))确定。
Surface(x,y,Z,C) 曲面确定如上情形,颜色由参数c确定。
surface(…'PropertyName',PropertyValue,…) 对指定的曲面属性PropertyName指定为PropertyValue,对曲面进行细微控制。
h = surface(…) 返回生成面对象的句柄。
命令5 image
功能 显示图片对象。该命令通过对矩阵c中每一个元素(每一元素作为引用图形色图下标或直接给出RGB值)的解释而生成一个图片对象。Image命令有两种使用格式:
1.一个调用命令newplot的高级函数,可以确定在何处放置图片与坐标轴的范围为刚好围住图片;使刚生成的图片放置在坐标轴的刻度线与格栅线之上;属性Ydir设置为rervse;属性View为[0 90]。
2.一个增加图片到当前坐标轴的低级命令,而没有调用命令newplot,在低级使用形式中,只能对指定属性进行设置操作。
用户在命令的输入参量中可以输入属性名/属性值,结构数组,细胞数组等。
用法 image(C) 把C作为一图片进行显示。C中的每一个元素指定了一个“图片”矩形中的相应部分的颜色。
image(x,y,C) 在(x,y)确定的位置上画C的元素。其中x,y都为2维矩阵,分别指定x轴与y轴的范围,其效果与image(C)相同,只不过是进行了恰当的比例缩放。
image(x,y,C,'PropertyName',PropertyValue,…) 该形式为指定属性名/属性值的高级使用形式,在执行该命令之前,先执行命令newplot。
image('PropertyName',PropertyValue,…) 该形式为低级使用形式,它只接受属性名/属性值的输入。
图7-48 |
例7-49
>>load clown
>>image(X,'CDataMapping','scaled')
>>colormap(map)
图形结果为图7-48。
命令6 uicontrol
功能 生成用户控制图形对象(用户界面控制)。也通过该命令运行图形用户界面。当对象被选中时,一般会执行相应的操作。系统支持多种控件,每一种都有不同的作用:
? 校验框——当单击检验框时,会执行一操作。该组件对于提供用户多个独立的选择是很有用的。要激活一校验框,只需用鼠标单击该组件即可,且选中的状态在组件上显示出来。
? 可编辑文本框——允许用户输入与修改文本文字的区域。当用户想把文字作为 输入时,可使用该组件。若一可编辑文本框有焦点,则单击文本框的菜单栏不会执行任何操作。因此,在单击菜单条后,语句 get(edit_handle,’String’)并没有返回当前编辑框中的内容。因为系统必须执行回调函数来改变属性 string的值,即使屏幕上显示的文字已经改变。
? 框架——该组件为一封闭的、可见的、图形窗口区域。框架能使一用户图形界面中相关的控制组件能容易理解。框架没有相关的回调程序。只有控制组件能在框架中显示。框架不是透明的,因此用户定义的组件先后顺序决定了组件是否被框架遮住或可见。属性Stacking order决定了控制组件的显示顺序:第一个定义的组件最先显示,后面定义的控制组件则覆盖已经存在的组件。若用户要用一框架包围一些组件,则必须第一个定义框架。
? 列表框——显示一些项目的列表(用命令string设置),且允许用户选择一个或多个项目。属性Min与Max控制着选择的模式。属性Value显示可选择的项目与包含着字符串列表中项目的索引;对于选择了多个项目则用向量表示。在任何的能改变属性Value值的、鼠标松开的操作之后,系统MATLAB将马上执行列表框的回调函数。因此,用户有必要增加一“Done”按钮,用于推迟当要多次选择项目时的操作。在执行列表框回调函数Callback属性之前,列表框中项目的选择有单击或双击之分,对应于将图形窗口属性SelectionType设置为normal或open。
? 弹出菜单——当组件被按下时,打开且显示一选择列表(用命令string设置)。当没有打开时,该组件显示当前的选择项。该组件对于用户想给其他用户提供一系列的互斥的选择项,又不想占用太多的区域。
? 普通按钮——当该组件被按下时,将执行一操作。要激活一按钮,只需在按钮上按下鼠标按钮。
? 单选按钮——该组件与校验框相类似,但它包含几个互斥的、而且相关的选项(例如在任意时刻,只能选择一个状态)。要激活某一单选按钮,只需在该组件上按下鼠标即可。被选中的组件同时显示出来。
? 滑块——该组件允许用户通过移动某一范围之内的滑块来输入一指定的数值。用户要移动一滑块,只需在滑块上按下鼠标不放,且在滑块方向上移动;或者是在滑槽内单击鼠标;或者是单击滑块条上的箭头。当松开鼠标后,滑块所在位置将与一数值对应。用户可以设置滑块的最大值、最小值与当前值等。
? 静态文本框——显示文本行。静态文本经常作为其他控制对象标签,以提供其他用户相关信息,或者是显示一滑块的数值。其他用户不能交互地改变静态文本,因此对于静态文本,没有相关的回调函数。
? 触发按钮——当该组件被单击且显示出它们的状态(on或者off)时,控制是否执行回调函数。
用法 handle = uicontrol(parent) 在父对象parent上生成一用户图形控制界面。用户界面控制对象都是图形窗口的子对象,所以当窗口中没有坐标轴时,同样可以放置控制组件于图形窗口中。
handle = uicontrol(…,'PropertyName',PropertyValue,…) 参量PropertyName为属性名,参量PropertyValue可为结构数组或者为单元数组,同时随意地返回刚生成的对象的句柄。当然用户可以通过命令set与get来设置与询问生成对象的属性值。
附:表7-12列出所有的用于命令uicontrol对象的属性名。每一属性名当作一描述该属性的链接。
表7-12
属性名 | 属性名含义 | 属性值 |
控制控件类型与显示 | ||
BackgroundColor | 对象的背景颜色 | 有效值:ColorSpec 缺省值:与系统有关 |
Cdata | 显示于对象之上的真颜色图片 | 有效值:矩阵 |
ForegroundColor | 文本字体的颜色 | 有效值:ColorSpec 缺省值:[0 0 0](黑色) |
SelectionHighlight | 当对象被选中时突出显示 | 有效值:on、off 缺省值:on |
String | 用户控制界面的标签,也是列表框与弹出菜单中的项目 | 有效值:任意有效的字符串 |
Visible | 用户界面控制是否可见 | 有效值:on、off 缺省值:on |
关于控件对象的一般信息 | ||
Children | 用户界面控制界面没有子对象 |
|
Enable | 用户界面控制是否可用 | 有效值:on、inactive、off 缺省值:on |
Parent | 用户界面控制对象的父对象 | 有效值:图形窗口标量句柄 |
Selected | 对象是否为选中状态 | 有效值:on、off 缺省值:off |
SliderStep | 滑块步长尺度 | 有效值:二维向量 缺省值:[0.001 0.1] |
Style | 用户界面控制对象的类型 | 有效值:pushbutton、edit、togglebutton、slider、text、radiobutton、popupmenu 、listbox、frame 缺省值:pushbutton |
Tag | 由用户指定的对象的标记符 | 有效值:任意有效字符串 |
TooltipString | 对象的工具提示 | 有效值:任意有效字符串 |
Type | 图形对象的类型 | 有效值:字符串(只读) 缺省值:uicontrol |
UserData | 用户指定的数据 | 有效值:矩阵 |
控制控件对象的位置 | ||
Position | 用户界面控制对象的大小与位置 | 有效值:位置矩形 缺省值:[20 20 60 20] |
Units | 解释属性position向量的单位 | 有效值:pixels、inches、character、normalized、points、centimeters 缺省值:pixels |
控制字体与标签 | ||
FontAngle | 字符的倾斜度 | 有效值:normal、italic、oblique 缺省值:normal |
FontName | 字体系列名称 | 有效值:字符串 缺省值:与系统有关 |
FontSize | 字体大小 | 有效值:一标量 缺省值:与系统有关 |
FontUnits | 字体大小单位 | 有效值:pixels、normalized 、inches、centimeters、points 缺省值:points |
FontWeight | 文本字体的磅值 | 有效值:light、normal、demi、bold 缺省值:normal |
HorizontalAlignment | 标签字符串的对齐方式 | 有效值:left、center、left 缺省值:决定于用户界面控制的对象 |
String | 用户控制界面的标签,也是列表框与弹出菜单中的项目 | 有效值:字符串 |
控制回调函数的执行 | ||
BusyAction | 回调函数中断方式 | 有效值:cancel、queue 缺省值:queue |
ButtonDownFcn | 当按钮按下时执行的回调函数 | 有效值:字符串 |
Callback | 控制操作 | 有效值:字符串 |
CreateFcn | 在对象生成过程中执行的回调函数 | 有效值:字符串 |
DeleteFcn | 在对象删除过程中执行的回调函数 | 有效值:字符串 |
Interruptible | 回调函数中断的模式 | 有效值:on、off 缺省值:on |
UIContextMenu | 与界面控制中的对象相关的菜单(如按下鼠标右键) | 有效值:句柄 |
关于当前状态的一般信息 | ||
ListboxTop | 第一个显示于列表框中的项目的索引 | 有效值:标量 缺省值:[1] |
Max | 最大值(与用户界面控制对象有关) | 有效值:标量 缺省值:与系统有关 |
Min | 最小值(与用户界面控制对象有关) | 有效值:标量 缺省值:与系统有关 |
Value | 用户界面控制对象的当前值 | 有效值:标量或向量 缺省值:与系统有关 |
控制组件的访问 | ||
HandleVisibility | 句柄是否可从命令窗口中与GUIs中访问 | 有效值:on、callback、off 缺省值:on |
HitTest | 组件是否可由鼠标单击选中 | 有效值:on、off 缺省值:on |
命令7 uimenu
功能 生成图形窗口的菜单中的层次的菜单与下一级子菜单。即增加新的菜单于已经存在的菜单后面,当一菜单项被选中时,该菜单项与它的下一级菜单也将显示。也可用该命令生成与组件相关的菜单。
用法 handle = uimenu('PropertyName',PropertyValue,…) 在当前图形窗口菜单条上用指定的属性PropertyName与相应的属性值PropertyValue创建一菜单,同时将该菜单的句柄赋给 handle。其中两个输入参量可以是结构数组或者是单元数组。用户界面菜单的回调函数属性定义了当用户激活菜单项时,进行的响应操作。
uimenu('PropertyName',PropertyValue,…) 效果同上,但不返回句柄值。
handle = uimenu(parent,'PropertyName',PropertyValue,…) 生成一父菜单的子菜单,或者是生成由parent指定的相关菜单中的菜单项目。若parent不是另外的用户界面菜单对象或用户界面相关菜单对象,而是一图形窗口,则系统将生成该图形窗口菜单条上的新的菜单。同时将生成的菜单赋值给句柄handle。
uimenu(parent,'PropertyName',PropertyValue,…) 效果同上,但不返回菜单的句柄。
附:表7-13列出了所有对uimenu对象有用的属性,分别按功能进行了分类。每一属性名作为该属性描述的索引。
表7-13
属性名 | 属性名描述 | 属性值 |
控制控件类型与显示 | ||
Checked | 菜单检查记号 | 有效值:on、off 缺省值:off |
ForegroundColor | 文本的颜色 | 有效值:ColorSpec 缺省值:黑色[0 0 0] |
Label | 菜单标签 | 有效值:任何字符串 |
Separator | 分隔线模式 | 有效值:on、off 缺省值:off |
SelectionHighlight | 对象选中时是否突出显示 | 有效值:on、off 缺省值:on |
Visible | 用户界面菜单是否可见 | 有效值:on、off 缺省值:on |
关于对象的一般信息 | ||
Acceleratro | 键盘等价字符 | 有效值:任何的字符 |
Children | 子菜单的句柄 | 有效值:句柄向量 |
Enable | 用户界面菜单是否可用 | 有效值:on、off 缺省值:on |
Parent | 用户界面菜单的父对象 | 有效值:句柄 |
Tag | 用户指定的对象标记符 | 有效值:任何字符串 |
Type | 图形对象类型 | 有效值:字符串read-only 缺省值:uimenu |
UserData | 用户指定数据 | 有效值:任何矩阵 |
控制对象的位置 | ||
Position | 用户界面菜单的相对位置 | 有效值:标量 缺省值:[1] |
控制回调程序的执行 | ||
BusyAction | 回调程序的中断 | 有效值:cancel、queue 缺省值:queue |
ButtoDownFcn | 按钮按下回调程序 | 有效值:字符串 |
Callback | 控制操作 | 有效值:字符串 |
CreateFcn | 在对象生成期间执行的回调程序 | 有效值:字符串 |
DeleteFcn | 在对象删除期间执行的回调程序 | 有效值:字符串 |
Interruptible | 回调程序中断模式 | 有效值:on、off 缺省值:on |
控制对象的访问 | ||
HandleVisibility | 是否可从命令行上访问图形用户界面 | 有效值:on、callback、off 缺省值:on |
HitTest | 是否可用鼠标选择 | 有效值:on、off 缺省值:on |
7.3.2 轴的产生和控制命令
命令1 axes
功能 创建坐标轴图形对象。该命令是创建坐标轴图形对象的低级函数命令。
用法 axes 在当前图形窗口中用缺省的属性值创建一坐标轴图形对象。
axes('PropertyName',PropertyValue,…) 用参量'PropertyName'指定的属性名与用参量PropertyValue指定的属性值创建一坐标轴。对于没有指定的属性名,系统则使用缺省的属性值。
axes(h) 使已经存在的坐标轴h成为当前的坐标轴。同时使坐标轴h为图形窗口中的所有子对象属性(Children property)的第一坐标轴,也使图形窗口的CurrentAxes属性为h。当前坐标轴是图形函数image、line、patch、 surface与text等命令输出图形对象的目的地。
h = axes(…) 返回已经创建的坐标轴对象的句柄。
命令2 cla
功能 清除当前坐标轴。该命令在命令窗口中执行与在回调程序中执行效果是一样的,即它不能区别由callback设置的属性 HandleVisibility,也就是说,当它从一回调程序中执行时,命令cla仅仅删除属性HandleVisibility为on的图形对象。
用法 cla 清除当前坐标轴中所有句柄为不隐藏(例如,图形对象属性HandleVisibility设置为on)的图形对象。
cla reset 无条件地清除当前坐标轴中所有图形对象,且重新设置坐标轴的属性,(除了属性Position和Units)。
命令3 gca
功能 获取当前坐标轴句柄。
用法 h=gca 返回当前图形窗口中的坐标轴句柄。若坐标轴不存在,系统则生成一坐标轴同时返回它的句柄。用户不想得到上面的结果,可以输入get(gcf,’CurrentAxes’)。
当前坐标轴为用户创建坐标轴以下子对象的目的地。有许多图形命令可以在当前坐标轴中画出图形对象,如:plot,text,surf等。改变了当前窗口,相应地改变了当前坐标轴。
7.3.3 图形句柄操作命令
命令1 gco
功能 返回当前对象的句柄。“当前对象”为最后用鼠标单击的对象,除了命令uimenus之外。若鼠标没有单击到一图形对象之下的子对象,则该图形对象为“当前对象”。系统会把当前图形对象的句柄存放于图形的属性CurrentObject之中。当前图形窗口中的当前对象并非总是那些它们的回调函数,而是正在执行的对象。其他函数的回调中断函数可以改变当前对象或者甚至是当前图形窗口。一些回调函数,如生成命令CreateFcn、删除命令DeleteFcn 与用户界面菜单命令Callback等就没有改变当前图形窗口或者当前对象。
用法 h = gco 返回当前对象的句柄给h。
h = gco(figure_handle) 返回指定窗口figure_handle中的当前对象的值。
命令2 get
功能 获取对象属性。
用法 get(h) 返回由句柄h指定的图形对象的所有属性与相应的当前属性值;
get(h,'PropertyName') 返回由句柄h指定的图形对象的指定属性PropertyName的属性值。
<m-by-n value cell array> = get(H,<property cell array>) 返回由m个图形对象的n个属性值组成的m*n阶的细胞数组,其中m=length(H),且n为指定的属性细胞数组<property cell of array>中包含的属性名个数。
a = get(h) 返回一结构,其中该结构的域名为该对象的属性名,结构的域名值为相应属性的当前值。H必须为标量。若用户没有指定输出参量,则系统将信息显示于屏幕之上。
a = get(0,'Factory') 返回所有能由用户设置的属性的缺省定义值。输出参量a为一结构数组,该结构的域名为对象的属性名,域名值为相应属性的当前值。若用户没有指定输出参量,则系统将信息显示于屏幕之上。
a = get(0,'FactoryObjectTypePropertyName') 返回指定对象类型的指定的属性的缺省属性值。输入参量FactoryObjectTypePropertyName为一关键字,由字符Factory与对象类型(如:Figure)还有属性名(如:Color)组成:FactoryFigureColor
a = get(h,'Default') 返回由句柄h指定的对象的所有缺省属性值。输出参量a为一结构,该结构的域名为缺省值对应的属性名。若用户没有指定输出参量,则系统将该结构信息显示于屏幕。
a = get(h,'DefaultObjectTypePropertyName') 返回对象类型的指定属性的缺省属性值。输入参量DefaultObjectTypePropertyName为一关键字,该字由字符Default与对象类型名(例如:Figure)还有具体的属性名(例如:Color)组成:DefaultFigureColor
例7-50
若想获得定义于屏幕之上的图形对象属性LineWidth的缺省属性值,输入:get(0,'DefaultLineLineWidth')
命令3 set
功能 设置对象的属性。
用法 set(H,'PropertyName',PropertyValue,…) 用属性值'PropertyValue'设置关于用参量H标志的对象(一个或多个)的属性名'PropertyName'(一个或多个)。H可以为一句柄的向量。在这种情形下,命令set可以设置所有对象的属性值。
set(H,a) 用指定的属性值设置由H标志的对象的属性。其中a为一结构数组,该结构数组的域名为对象的属性名,域名值为相应属性名的属性值。
set(H,pn,pv…) 对由H指定的所有对象中指定的细胞数组属性名pn设置为相应的细胞数组属性值pv。
set(H,pn,<m-by-n cell array>) 对于每m个图形对象设置n个属性值,其中m=length(H),n为包含属性名的细胞数组pn中包含的属性名个数。即允许用户对每一对象的指定的属性设置不同的属性值。
a= set(h) 返回句柄h中允许用户设置的属性名与可能的属性值。输出参量a为一结构数组,其域名为对象的属性名,域名值为相应的属性名对应的属性值。若没有指定输出参量a,则系统自动将信息显示于屏幕,h必须为标量。
a= set(0,'Factory') 返回那些用户可以设置缺省值的所有对象的属性名,同时显示可能的属性值,输出参量a为一结构数组,其域名为对象的属性名,域名值为相应的属性名对应的属性值,若没有指定输出参量a,则系统自动将信息显示于屏幕。
a= set(0,'FactoryObjectTypePropertyName')返回指定根对象(0)类型中指定的属性名 ObjectTypePropertyName的所有可能的属性值。输入参量是由固定的关键字Factory、对象类型(如axes)与属性名(如 position等)组成。
a= set(h,'Default') 返回由h标记的对象上缺省设置的值,其中h必须是标量。
a= set(h,'DefaultObjectTypePropertyName') 返回指定对象h的类型中指定的属性名ObjectTypePropertyName的所有可能的属性值。输入参量是由固定的关键字Factory、对象类型(如axes)与属性名(如position等)组成。
命令4 reset
功能 重新设置图形对象的属性为它们的缺省值。
用法 reset(h) 重新设置由句柄h指定的图形对象的属性为系统为它们设置的初始值。若h为一图形figure,该命令不能重新设置属性 Position,Units,PaperPosition和PaperUnits;若h为一坐标轴axes,该命令不能重新设置属性Position和 Units。
例7-51
reset(gca) %重新设置当前坐标轴的属性。
reset(gcf) %重新设置当前图形的属性。
命令5 delete
功能 删除文件或图形对象。作为一可供选择的函数,用户可从当前目录浏览器(Current Directory browser)中删除文件。要打开该浏览器,从MATLAB桌面上的View菜单中选择Current Directory命令。
用法 delete filename 从磁盘上删除指定的文件filename。参量filename可以是绝对路径或与当前路径相关的路径名。其中可以包括通配符(*)。
delete(h) 删除由句柄h指定的图形对象。该命令无条件地、直接地删除对象,甚至是图形窗口。
delete('filename') 这是第一种情形的函数形式。当文件名包含于字符串filename中时,使用函数形式。
例:
delete(‘D:\MATLABR12\work\*.m’) % 将删除指定目录上的所有.m文件。
命令6 findobj
功能 定位图形对象且返回它们的句柄。用户可用特定的属性值与沿着指定的层次分支来限定搜索条件。
用法 h = findobj返回根对象与它的所有的子孙对象句柄。
h = findobj('PropertyName',PropertyValue,…) 返回属性名PropertyName具有属性值PropertyValue的所有图形对象。用户可指定一对或多对PN与PV值,对此,findobj返回满足所有条件的那些对象。
h = findobj(objhandles,…) 限定搜索的对象为列表于objhandles中的对象与它们子孙对象。
h = findobj(objhandles,'flat','PropertyName',PropertyValue,…) 限定搜索对象为objhandles中列出的对象,而不包含它们的子孙对象。
7.3.4 图形窗口的控制命令
命令1 subplot
功能 生成与控制多个坐标轴。把当前图形窗口分隔成几个矩形部分,不同的部分是按行方向以数字进行标号的。每一部分有一坐标轴,后面的图形输出于当前的部分中。
用法 subplot(m,n,p) 将一图形窗口分成m*n个小窗口,在第p个小窗口中创建一坐标轴。则新的坐标轴成为当前坐标轴。若p为一向量,则创建一坐标轴,包含所有罗列在p中的小窗口。
subplot(h) 使句柄h对应的坐标轴称为当前的,用于后面图形的输出显示。
subplot('Position',[left bottom width height]) 在由4个元素指定的位置上创建一坐标轴。位置元素的单位为归一化单位。
h = subplot(…) 返回一新坐标的句柄于h。
命令2 hold
功能 保持当前图形窗口中的图形。该命令是决定是否在当前坐标轴中只能增加新的图形对象还是覆盖原有图形对象。测试保持状态命令为ishold。该命令可以设置当前坐标轴与当前图形的属性NextPlot。若一图形窗口中有多个坐标轴,则每个坐标轴有自己的保持状态。
用法 hold on 保留当前图形与当前坐标轴的属性值,后面的图形命令只能在当前存在的坐标轴中增加图形,即设置当前坐标轴属性NextPlot为add。当必要的时候,坐标轴的一些属性在增加新图时还是要进行相应的改变。例如,当新图形的数据范围超出了当前坐标轴的范围,则命令会自动地改变坐标轴的范围,使能显示新图形。
hold off 在画新图形之前,重新设置坐标轴的属性为缺省值。off是命令hold命令的缺省值。设置当前坐标轴的属性NextPlot为replace。
hold 在on与off之间转换。即在增加图形与覆盖图形之间切换。当坐标轴不存在时,则生成一坐标轴。同时使当前坐标轴属性NextPlot在add与replace之间切换。
命令3 gcf
功能 获得当前图形窗口的句柄。
用法 h = gcf 返回当前图形窗口的句柄。当前窗口为由命令plot、title与surf等得到的结果。若不存在图形窗口,则系统自动地生成一个,并返回它的句柄。若用户想当图形窗口不存在时,也不创建新的,则输入:get(0,'CurrentFigure')
命令4 clf
功能 清除当前图形窗口。该命令在命令窗口中执行与在回调程序中执行效果是一样的,即它不能区别由callback设置的属性 HandleVisibility,也就是说,当它从一回调程序中执行时,命令clf仅仅删除属性HandleVisibility为on的图形对象。
用法 clf 清除所有当前图形窗口与窗口中的所有那些句柄为不隐藏(例如它们的属性HandleVisibility为on)的图形对象。
clf reset 无条件地清除当前图形窗口中所有的图形对象,且重新设置所有图形窗口属性为缺省值,除了属性Position,Units,PaperPosition,PaperUnits。
命令5 close
功能 删除指定的图形窗口。
用法 close 删除当前的图形窗口。
close(h) 删除由句柄h指定的图形窗口。若h为一向量或矩阵,则close全部删除其中每一分量指定的图形句柄。
close name 删除指定名字name的窗口。
close all 删除所有没有隐藏的图形。
close all hidden 删除所有具有隐藏的图形。
status = close(…) 若成功地删除了指定的对象则返回status=1,否则返回0。
命令6 newplot
功能 做好开始画新图形对象的准备。在高级图形m-文件的开始使用该命令,用于确定在哪一个图形窗口与坐标轴中输出图形。调用命令newplot能改变当前窗口与坐标轴。基本上,当要在已经存在的窗口与坐标轴中画图,有三个选项可选:
1.没有改变任何属性与删除任何对象,直接在当前坐标轴中增加新的图形对象;
2.在画图形的对象之前,删除所有存在于当前坐标轴中的,句柄为非隐藏的对象;
3.在画图形的对象之前,无条件删除所有的存在于当前坐标轴中的对象(不管句柄是否为隐藏),同时设置大部分的属性为缺省值;
4.首先,newplot读取当前图形的属性NextPlot的属性值(关于该属性的含义参见figure或axes的属性表),再执行相应的动作;
5.然后,newplot确定在哪一个窗口中画图,它读取当前图形的属性NextPlot的属性值,执行相应的操作。
用法 newplot 画好图形窗口与坐标轴,后面的图形命令就可以在该坐标轴内画图。
h = newplot 效果如上,且返回当前坐标轴的句柄给h。
7.4 颜色与光照模式命令
7.4.1 颜色控制命令
命令1 colormap
功能 设置或获取当前色图。色图为一个m*3的、元素在0到1之间的实数的矩阵,每一行为定义一个颜色的RGB向量。色图矩阵的第k行定义了第k个颜色,其中 map(k,:)=[r(k) g(k) b(k)]指定了组成该颜色中红色、绿色、兰色的强度。
用法 colormap(map) 通过矩阵map设置色图。若矩阵map中的元素不在[0 1]区间之内,则返回一个错误。在目录color中的m-文件能够生成许多色图,每一个m-文件能够接受颜色数作为函数参数,例如命令 colormap(hsv(64))生成了有64种颜色的hsv色图。若用户没有指定颜色数,例如命令colormap(hsv),生成与当前色图中颜色数相同的hsv色图。MATLAB支持的色图见表7-14。
表7-14
色图名称 | 包含的颜色范围 |
Cool | 青蓝和洋红的色度 |
Bone | 带一点蓝色的灰度 |
Flag | 交替为红色、白色、蓝色和黑色 |
Jet | Hsv的一种变形(以兰色开始和结束) |
Copper | 线性铜色度 |
Hsv | 色彩饱和值(以红色开始和结束) |
Hot | 从黑色到黄色到白色 |
Gray | 线性灰度 |
Pink | 粉红的彩色度 |
Prim | 三棱镜。交替为红色、橘黄色、黄色、绿色和天蓝色 |
Lines | 线性色图 |
White | 全白色图 |
Colorcube | 增强立方色图 |
Autumn | 红色黄色阴影色图 |
Spring | 洋红黄色阴影色图 |
Summer | 绿色黄色阴影色图 |
Winter | 兰色绿色阴影色图 |
例7-52
colormap('default') 设置当前色图为缺省色图。
cmap = colormap 获取当前色图矩阵。
命令2 bone
功能 生成带淡兰色的灰度刻度化的色图。
用法 bone(m) 返回个一个阶数为m*3的包含“bone”的色图。
bone 返回一个与当前色图行数相同的色图。
命令3 cool
功能 生成带阴影的青色和品红的色图。
用法 cool(m) 返回一个阶数为m*3的包含“cool”的色图。
cool 返回一个与当前色图行数相同的色图。
命令4 copper
功能 生成线性铜色色图。
用法 copper(m)返回一个阶数为m*3的包含“copper”的色图。
copper 返回一个与当前色图行数相同的色图。
命令5 flag
功能 生成一个颜色顺序为红、白、兰、黑的色图。
用法 flag(m)返回一个阶数为m*3的包含“flag”的色图。增加m的值,会增加色图的颗粒程度。
flag 返回一个与当前色图函数相同的色图。
命令6 gray
功能 生成一个线性灰度化的色图。
用法 gray(m)返回个一个阶数为m*3的包含灰度化的的色图。
gray 返回一个与当前色图函数相同的色图。
命令7 hot
功能 生成一个颜色顺序为黑、红、黄、白的色图。
用法 hot(m)返回个一个阶数为m*3的包含“hot”的色图。
hot 返回一个与当前色图函数相同的色图。
命令8 hsv
功能 生成一个包含色度-饱和度值的色图。一个hsv色图包含各种饱和色度颜色的色度的成分。其颜色从红色到黄色、绿色、青色、蓝色、品红,最后返回红色。该色图对于显示周期函数很有用处。
用法 hsv(m)返回个一个阶数为m*3的包含hsv的色图。
hsv 返回一个与当前色图函数相同的色图。
命令9 jet
功能 不同于hsv色图的另外一种色图。
用法 jet(m)返回个一个阶数为m*3的,与hsv(m)不同的色图,用于显示NCSA流体激光图片。
jet 返回一个与当前色图函数相同的色图。
命令10 pink
功能 生成一个带柔和阴影粉红色图。
用法 pink(m)返回一个阶数为m*3的包含“pink”的色图。
pink 返回一个与当前色图函数相同的色图。
命令11 prism
功能:生成一个三棱镜色图。如同hsv色图一样,prism色图中的颜色使用顺序是一样的,不同的是,命令prism重复使用它的六中颜色,而命令hsv是连续地变换它的颜色。
用法 prism(m)返回一个阶数为m*3的包含六种循环使用的颜色:红色、橙色、黄色、绿色、蓝色、紫色。
prism 这种没有任何输入输出参量的形式,改变当前坐标轴中的线对象的颜色为三棱镜中的颜色。
7.4.2 色图控制命令
命令1 brighten
功能 增亮或变暗色图。
用法 brighten(beta) 增亮或变暗当前的色图。若0<beta<1,则增亮色图;若-1<beta<0,则变暗色图。改变的色图将代替原来的色图,但本质上是相同的颜色。
brighten(h,beta) 对指定的句柄对象h中的子对象进行操作。
newmap = brighten(beta) 该命令没有改变当前图形的亮度,而是返回变化后的色图给newmap。
newmap = brighten(cmap,beta) 该命令没有改变指定色图cmap的亮度,而是返回变化后的色图给newmap。
命令2 colorbar
功能 显示能指定颜色刻度的颜色条。且调整当前坐标轴,以适应当前的颜色条。
用法 colorbar 更新最近生成的颜色条。或若当前坐标轴没有一颜色条,则在右边显示一垂直的颜色条。
colorbar('vert') 增加一垂直的颜色条到当前的坐标轴。
colorbar('horiz') 增加一水平的颜色条到当前的坐标轴。
colorbar(h) 用坐标轴h来生成一颜色条。若坐标轴的宽度大于高度,则颜色条是水平放置的。
h = colorbar(…)返回一颜色条句柄h,该句柄是一坐标轴对象。
colorbar(…,'peer',axes_handle) 生成一与坐标轴axes-handle有关的颜色条,代替当前的坐标轴。
命令3 contrast
功能 提高灰度色图的对比度。该命令可以增强图像的对比度。
用法 cmap = contrast(X) 返回一灰度色图,该色图与当前色图有相同的维数。参量cmap为生成的灰度色图。
cmap = contrast(X,m) 返回维数为m*3的灰度色图cmap。
例7-53
>>load clown;
>>cmap = contrast(X);
>>image(X);
>>colormap(cmap);
命令4 rgbplot
功能 画出色图。
用法 rgbplot(cmap) 画出维数为m*3的色图矩阵cmap的每一列,矩阵的第一列为红色强度,第二列为绿色强度,第三列为蓝色强度。
命令5 diffuse
功能 漫反射率。
用法 R = diffuse(Nx,Ny,Nz,S) 返回曲面的漫反射率向量[Nx,Ny,Nz],S为一三维向量,用于定义光源的方向;S也可以为球面坐标系中的二维向量[Theta,Phi]。
Lambert定律:R = cos(PST),其中PST为曲面法线与光源方向之间夹角。
命令6 specular
功能 镜面反射率。
用法 R = specular(Nx,Ny,Nz,S,V,spread) 返回一曲面的镜面反射率向量[Nx,Ny,Nz],向量参量S与V分别用于指定光源位置与观察点的位置。它们可以为三维直角坐标系向量[x,y,z]或者为二维球面向量[Theta,Phi]。当标准向量的方向为(S+V)/2,则镜面的高光效果最强。第六个参量spread为镜面反射扩散系数。
命令7 surfl
功能 三维带光照模式的阴影图。图形的色泽取决于曲面的漫反射、镜面反射与环境光照模式。
用法 surfl(…)效果与命令surf(…)基本上一样,除了它受光源影响的曲面之外。
surfl(Z)、surfl(X,Y,Z)、surfl(Z,S)、surfl(X,Y,Z,S)、surfl(X,Y,Z,S,K) 这些都是有效的使用形式。若参数中有S,则为一三维向量[Sx,Sy,Sz],用于指定光源的方向。S也可视为点坐标系下的二维向量[AZ,EL]。S的缺省值为从当前观察方向逆时针旋转45度。使用命令组cla;hold on;view(AZ,EL);surfl(…);hold off等可画出视角方向为(AZ,EL)的带光照模式的曲面图。第五参数K=[ka,kd,ks,
spread]指定环境光、漫反射光、镜面反射光、扩散系数等的强弱。
surfl(…,'light') 用LIGHT对象生成一带颜色的、带光照模式的曲面。该命令可以生成与用缺省光照模式不同效果的曲面。
surfl(…,'cdata') 指定的曲面的反射光的颜色为cdata。
H = surfl(…) 返回曲面与光源的句柄。