China-pub.com 第14章高级图形 263 下载 (续) 如果DataAspectRatio设定,那么DataAspectRatioMode就会自动地设为 ‘manua1' DrawMode 画图象使用的模式,值可以为‘normal’(缺省值)或者‘fast'。后者 更快,但会产生不正确的图。当父对象(图形对象)用Renderert命令设置为 “zbuffer’时,该属性无意义 Linestyleorder 指定线条和点的类型的字符串,用于在坐标轴上画多条线。例如:‘一*1: Io'将通过点划线、点线和实线循环。Linestyleorder缺省值为-',即 所有的线是实线 Linewidth X、¥和z坐标轴的宽度,缺省值为0.5点 NextPlot 指定在坐标轴内画新图形的方式: ‘add' (缺省值)使用当前的坐标轴 replace' 删除窗口及其子对象,并重新设置所有属性值 (除位置属性外)。等同于命令cla reset ‘replace childrer删除所有子对象,但是不重新设置属性值。等 同于命令c1a PlotBoxAspectRatio 向量[px py pz]分别规定了由*Lim(见表14-13)定义的坐标框架在x, y和:方向的大小 PlotBoxAspect-RatioMode MATLAB是否自动计算坐标边框在x,y和:方向的分量。如果设为缺省值 'auto',MATLAB会生成PlotBoxAspectRatio:如果设为‘manual', 就直接使用PlotBoxAspectRatio。如果设置了PlotBoxAspectRatio, 那么PlotBoxAspectRatioMode就自动地被设为‘manual' Projection 观察模式的设定。Projection设为缺省值‘orthographic',则将数 据集合内的平行线平行地画在屏幕上。这种模式适合于数值数据。另一种模 式是‘perspective',从远处看对象在屏幕上变得更小,所以这种模式适 合于‘rea1’对象,例如实心模型 Position 位置向量[1 eft bottom width he1优表坐标轴在图形窗口中的 位置和大小 Title 坐标轴标题文本对象的句柄 Units 大小和位置属性值的度量单位。有下列单位可供选择:‘inches'、 ‘centimeters'、‘normalized'(缺省值)、‘points'、‘pixels 和‘characters'。单位的选择会影响Position属性,见上 view 这是一个旧属性,用CameraPosition、CameraUpVectori和Camera: viewAng.1e代替,见表14-l2,也可参见命令vieW ■例14.8 假设要建一个用带有限参数的subplot命令不能显示出的图像。用axes命令创建五个坐标轴。 [X,Y]=meshgr1d(-2:0.3:2,-2:0.3:2); ZS cos(X).*cos(Y); %坐标轴位置 a(1)=axes('Position',[0.10.10.20.2]);%左下 a(2)=axes('Posit1on',[0.80.10.20.2]);%右下 a(3)=axes(Pos1tion',[0.80.80.20.2]);%右上 a(4)=axes(Position',[0.10.80.20.2]);%左上 a(5)=axes(Position',[0.30.30.50.5]);%中间 for i 1:5, axes(a(i)); %在不同坐标轴内画图
(续) 如果D a t a A s p e c t R a t i o设定,那么D a t a A s p e c t R a t i o M o d e就会自动地设为 ‘m a n u a l’ D r a w M o d e 坐画图象使用的模式,值可以为‘ n o r m a l’(缺省值)或者‘f a s t’。后者 更快,但会产生不正确的图。当父对象 (图形对象)用R e n d e r e r命令设置为 ‘z b u f f e r’时,该属性无意义 LineStyleOrder 坐指定线条和点的类型的字符串,用于在坐标轴上画多条线。例如:‘-*| : | o’将通过点划线、点线和实线循环。L i n e S t y l e O r d e r缺省值为‘-’,即 所有的线是实线 L i n e W i d t h 坐X、Y和Z坐标轴的宽度,缺省值为 0 . 5点 N e x t P l o t 坐指定在坐标轴内画新图形的方式: 坐‘a d d’ (缺省值)使用当前的坐标轴 坐‘r e p l a c e’ 删除窗口及其子对象,并重新设置所有属性值 (除位置属性外)。等同于命令cla reset 坐‘replace children’删除所有子对象,但是不重新设置属性值。等 同于命令c l a PlotBoxAspectRatio 坐向量[p x p y p z]分别规定了由* L i m (见表1 4-1 3 )定义的坐标框架在x, y和z方向的大小 P l o t B o x A s p e c t - R a t i o M o d e 坐M AT L A B是否自动计算坐标边框在 x,y和z方向的分量。如果设为缺省值 ‘a u t o’,M AT L A B会生成P l o t B o x A s p e c t R a t i o;如果设为‘m a n u a l’, 就直接使用P l o t B o x A s p e c t R a t i o。如果设置了P l o t B o x A s p e c t R a t i o, 那么P l o t B o x A s p e c t R a t i o M o d e就自动地被设为‘m a n u a l’ Projection 坐观察模式的设定。P r o j e c t i o n设为缺省值‘o r t h o g r a p h i c’,则将数 据集合内的平行线平行地画在屏幕上。这种模式适合于数值数据。另一种模 式是‘p e r s p e c t i v e’,从远处看对象在屏幕上变得更小,所以这种模式适 合于‘r e a l’对象,例如实心模型 Position 坐位置向量[left bottom width height ]代表坐标轴在图形窗口中的 位置和大小 Title 坐坐标轴标题文本对象的句柄 Units 坐大小和位置属性值的度量单位。有下列单位可供选择:‘i n c h e s’、 ‘c e n t i m e t e r s’、‘n o r m a l i z e d’(缺省值)、‘p o i n t s’、‘p i x e l s’ 和‘c h a r a c t e r s’。单位的选择会影响P o s i t i o n属性,见上 View 坐这是一个旧属性,用C a m e r a P o s i t i o n、C a m e r a U p V e c t o r和C a m e r aV i e w A n g l e代替,见表1 4-1 2,也可参见命令v i e w ■ 例1 4 . 8 假设要建一个用带有限参数的s u b p l o t命令不能显示出的图像。用a x e s命令创建五个坐标轴。 第1 4章 高 级 图 形 2 6 3 下载 % 坐标轴位置 % 左下 % 右下 % 右上 % 左上 % 中间 % 在不同坐标轴内画图
264 MATLAB5手册 China-bub.coM 下载 surf(ZS); if i ==1 %在不同的坐标轴内改变观察点 view(37.5,30); elseif i ==2 view(-37.5,70); %中间坐标轴使用的是缺省角度值(-37.5,30) elseif i ==3 v1ew(10,30); elseif i ==4 view(0,-20); end; end; 05 0.5 20 2动000 10 00 图14-8用axes画的不同坐标轴位置 注意,前两个数定义坐标轴的左下角位置,后两个数定义坐标轴的宽度和高度。在当前 的窗口内将位置归一化到[0,1]之间,结果如图148所示。这是从不同的角度看同一个曲面在 坐标轴内的图形。 下列属性用来控制轴对象和它子对象的颜色。 表14-11控制轴对象和它子对象颜色的属性和方法 AmbientLightColor 是一个RGB三元组或者是一种MATLAB中预定义的颜色,用来指定背景光的 颜色。它用相同的数量影响所有对象。仅在轴对象中有一个光源对象时,它才有效 CLim 颜色界限向量[cmin cmax,它确定将多边形和曲面对象的颜色数据(CData) 映射到图形对象的颜色表Colormap。cmin是映射到颜色表中的第一种颜色, cmar映射到最后一种颜色。CData中的值线性映射到在cmin和cmar之间的值, 小于cmin的值和大于cmax的值分别映射到第一种或者最后一种颜色上 CLimMode MATLAB是否自动计算cLim。如果CLimMode设为缺省值‘auto',则 MATLAB在所有可见的图形对象中搜索出Data的最小和最大值来。如果LimMode 设为缺省值manual',就直接使Lim。设Lim就把CLimMode设为manual' Color 坐标轴背景颜色:缺省值‘none’表示坐标轴是透明的。颜色可以是 个RGB三元组或者一个MATLAB中预定义的颜色 Colororder 一个mX3RGB值的矩阵,用在p1ot和p1ot3中。如果用户没有指定颜色, 这些函数就从这个矩阵中循环地使用颜色
图14-8 用a x e s 画的不同坐标轴位置 注意,前两个数定义坐标轴的左下角位置,后两个数定义坐标轴的宽度和高度。在当前 的窗口内将位置归一化到 [ 0,1 ]之间,结果如图1 4 - 8所示。这是从不同的角度看同一个曲面在 坐标轴内的图形。 下列属性用来控制轴对象和它子对象的颜色。 表1 4 - 11 控制轴对象和它子对象颜色的属性和方法 A m b i e n t L i g h t C o l o r 是一个R G B三元组或者是一种M AT L A B中预定义的颜色,用来指定背景光的 颜色。它用相同的数量影响所有对象。仅在轴对象中有一个光源对象时,它才有效 C L i m 颜色界限向量[cmin cmax],它确定将多边形和曲面对象的颜色数据( C D a t a ) 映射到图形对象的颜色表 C o l o r m a p。c m i n是映射到颜色表中的第一种颜色, c m a x映射到最后一种颜色。 C D a t a中的值线性映射到在c m i n和c m a x之间的值, 小于c m i n的值和大于c m a x的值分别映射到第一种或者最后一种颜色上 C L i m M o d e M AT L A B是否自动计算 C L i m。如果C L i m M o d e设为缺省值‘ a u t o’,则 M AT L A B在所有可见的图形对象中搜索出C D a t a的最小和最大值来。如果C L i m M o d e 设为缺省值‘m a n u a l’,就直接使用C L i m。设置C L i m就把C L i m M o d e设为‘m a n u a l’ C o l o r 坐标轴背景颜色;缺省值‘ n o n e’表示坐标轴是透明的。颜色可以是一 个R G B三元组或者一个M AT L A B中预定义的颜色 C o l o r O r d e r 一个m×3 R G B值的矩阵,用在p l o t和p l o t 3中。如果用户没有指定颜色, 这些函数就从这个矩阵中循环地使用颜色 2 6 4 M ATLAB 5 手册 下载 % 在不同的坐标轴内改变观察点 % 中间坐标轴使用的是缺省角度值(-37.5, 30) ■
China-bub.com 第14章高级图形 265 下载 MATLAB中使用'camera' 来指定观察坐标轴中的对象的角度。下列属性用来控制eamera'。 表14-12轴对象的观察点属性 CameraPosition 位置向量xy小,规定在坐标轴内观察点的位置 CameraPositionMode 决定MATLAB是否自动计算观察点位置。如果CameraPositionMode设为 缺省值‘auto',MATLAB会生成CameraPositionMode。如果设为 “manual',就直接使用CameraPositionMode。设置CameraPosition, 就自动把CameraPositionMode设为‘manual' CameraTarget 位置向量[xy2],规定在坐标轴内目标观察点的位置 CameraTargetMode 决定MATLAB是否会自动计算目标观察点的位置。如果 CameraTargetMode设为缺省值‘auto',MATLAB就将CameraTarget值设 为轴对象的中心点:如果设为‘manual',就直接使用CameraTarget。如设 置CameraTarget,就自动把CameraTargetMode设为‘manual' CameraUpVector 坐标轴内的位置向量[×yz],规定了观察点的旋转角度。在三维视图中 缺省值为[001}这表示z正半轴上的点是向上的 CameraUpVectorMode 决定MATLAB是否会自动计算CameraUpVector。.如果CameraUpVectorMode 设为缺省值auto',那么在三维视图中将ameraUpVector设为[001】。在二 维视图中将CameraUpVectori设为[01O]。如果CameraUpVectorMode设为 manual',就直接使用CameraUpVector。设置CameraUpVector,就自动把 CameraUpVectorMode设为manual'。 CameraviewAngle 观察点的角度(0一180度),观察角度越大,对象看起来就越小 CameraviewAngleMode 决定MATLAB是否会自动计算观察点角度。如果CameraviewAngleMode 设为缺省值‘auto',MATLAB就会将CameraviewAngleMode设为能观察 到所有对象的可能最小角度:如果设为‘manual',,就不改变设置。设置 CameraviewAngle,就自动把CameraviewAngleMode设为‘manual' 轴对象和它子对象的轴、刻度、图注和格栅由下列属性控制,其中字符*代表X、Y和Z之一。 表14-13控制轴的轴对象属性和方法 GridLineStyle 轴对象中格栅使用的线型,可选值有‘一’,‘一一’,·:’(缺省值), 一.’和‘none'。和命令集132中的命令grid比较 Layer 坐标轴放置在轴的子对象上的位置。子对象必须是二维视图,或者1ew值为[0 90]和orawMode值为‘fast'的三维视图,见表14-10。Layerl的值可以为 “bottom'(缺省值)或者top',也就是分别将坐标轴放在画图区域的下面或上面 TickLength 向量[2Dlen3Dlen],分别代表了在二维和三维视图中的坐标轴刻度标记的 长度。TickLength的值是坐标轴的最长长度分之一 TickDir 坐标轴刻度标记的指向。二维视图的缺省值是‘o',表示刻度标记从坐标 轴线向内:三维视图的缺省值是‘out',表示刻度标记从坐标轴线向外 TickDirMode MATLAB是否自动设置TickDir.如果TickDirMode设为缺省值‘auto', 就设置rickDir:如果设为‘manua1',就直接使用TickDir。设置 TickDir,就自动把TickDirMode设为manua1" XAxisLocation 刻度和数字文本放在x轴上的位置,值可以为‘bottom'(缺省值)或者 top',表示将刻度和文本放在图的下面或者图的上面 YAxisLocation 刻度和文本(数字)放在y轴上的位置,值可以为‘1eft'(缺省值)或者 “right',表示将刻度和文本放在图的左边或者图的右边
M AT L A B中使用‘c a m e r a’来指定观察坐标轴中的对象的角度。下列属性用来控制‘c a m e r a’。 表14-12 轴对象的观察点属性 CameraPosition 位位置向量[x y z],规定在坐标轴内观察点的位置 C a m e r a P o s i t i o n M o d e 位决定M AT L A B是否自动计算观察点位置。如果C a m e r a P o s i t i o n M o d e设为 缺省值‘ a u t o’,M AT L A B会生成 C a m e r a P o s i t i o n M o d e。如果设为 ‘m a n u a l’,就直接使用C a m e r a P o s i t i o n M o d e。设置C a m e r a P o s i t i o n, 就自动把CameraPositionMode设为‘manual’ C a m e r a T a r g e t 位位置向量[x y z],规定在坐标轴内目标观察点的位置 C a m e r a T a r g e t M o d e 位 决 定 M AT L A B 是 否 会 自 动 计 算 目 标 观 察 点 的 位 置 。 如 果 C a m e r a T a r g e t M o d e设为缺省值‘a u t o’,M A T L A B就将C a m e r a T a r g e t值设 为轴对象的中心点;如果设为‘m a n u a l’,就直接使用C a m e r a T a r g e t。如设 置CameraTarget,就自动把CameraTargetMode设为‘manual’ C a m e r a U p V e c t o r 位坐标轴内的位置向量[x y z],规定了观察点的旋转角度。在三维视图中 缺省值为[0 0 1],这表示z正半轴上的点是向上的 C a m e r a U p V e c t o r M o d e 位决定M AT L A B是否会自动计算C a m e r a U p V e c t o r。如果C a m e r a U p V e c t o r M o d e 设为缺省值‘a u t o’,那么在三维视图中将C a m e r a U p V e c t o r设为[0 0 1] 。在二 维视图中将C a m e r a U p V e c t o r设为[0 1 0]。如果C a m e r a U p V e c t o r M o d e设为 ‘m a n u a l’,就直接使用C a m e r a U p V e c t o r。设置C a m e r a U p V e c t o r,就自动把 C a m e r a U p V e c t o r M o d e设为‘m a n u a l’。 C a m e r a V i e w A n g l e 位观察点的角度( 0~1 8 0度),观察角度越大,对象看起来就越小 C a m e r a V i e w A n g l e M o d e 位决定MATLAB是否会自动计算观察点角度。如果 C a m e r a V i e w A n g l e M o d e 设为缺省值‘a u t o’,MATLAB就会将C a m e r a V i e w A n g l e M o d e设为能观察 到所有对象的可能最小角度;如果设为‘ m a n u a l’,就不改变设置。设置 C a m e r a V i e w A n g l e,就自动把C a m e r a V i e w A n g l e M o d e设为‘m a n u a l’ 轴对象和它子对象的轴、刻度、图注和格栅由下列属性控制,其中字符*代表X、Y和Z之一。 表14-13 控制轴的轴对象属性和方法 G r i d L i n e S t y l e 位轴对象中格栅使用的线型,可选值有‘—’,‘——’,‘ :’(缺省值 ), ‘—.’和‘n o n e’。和命令集1 3 2中的命令g r i d比较 L a y e r 位坐标轴放置在轴的子对象上的位置。子对象必须是二维视图,或者V i e w值为[ 0 9 0 ]和D r a w M o d e值为‘f a s t’的三维视图,见表1 4 - 1 0。L a y e r的值可以为 ‘b o t t o m’(缺省值)或者‘t o p’,也就是分别将坐标轴放在画图区域的下面或上面 T i c k L e n g t h 位向量[ 2D l e n 3D l e n],分别代表了在二维和三维视图中的坐标轴刻度标记的 长度。T i c k L e n g t h的值是坐标轴的最长长度分之一 T i c k D i r 位坐标轴刻度标记的指向。二维视图的缺省值是‘ o n’,表示刻度标记从坐标 轴线向内;三维视图的缺省值是‘ o u t’,表示刻度标记从坐标轴线向外 T i c k D i r M o d e 位M AT L A B是否自动设置T i c k D i r。如果T i c k D i r M o d e设为缺省值‘a u t o’, 就设置 T i c k D i r;如果设为‘ m a n u a l’,就直接使用 T i c k D i r。设置 T i c k D i r,就自动把T i c k D i r M o d e设为‘m a n u a l’ XAxisLocation 位刻度和数字文本放在 x轴上的位置,值可以为‘ b o t t o m’(缺省值 )或者 ‘t o p’,表示将刻度和文本放在图的下面或者图的上面 YAxisLocation 位刻度和文本 (数字)放在y轴上的位置,值可以为‘ l e f t’(缺省值)或者 ‘r i g h t’,表示将刻度和文本放在图的左边或者图的右边 第1 4章 高 级 图 形 2 6 5 下载
266 MATLAB5手册 China-pub.com 下载 续) *Color 一个RGB三元组或者MATLAB中一种预定义的颜色,表示*轴的颜色。在幸 方向的刻度标记、数字文本和格栅线都是这种颜色,缺省为·white'(白色) *Dir 表示*轴的方向,值可以为‘normal'(缺省值)或者颠倒方向的‘reverse' *Grid 是否在方向画格栅线,值可以为‘o'或者‘of·(缺省值)。使用命令 gr1d来画或清除在各方向上的格栅线,见命令集132 +Label *轴标志文本对象的句柄 *Lim 向量[min ma],表示幸轴的最小和最大值 *LimMode MATLAB是否自动计算*Lim。如果*LimMode设为缺省值‘auto',就自 动计算*Lim:如果设为‘manual',就直接使用*Lim。设置*红im,就自动 把*LimMode设为‘manual' *Scale 表示*轴的线性换算或者对数换算,值可以为‘1 inear’或者‘1og *Tick 是一个元素值单调递增的向量,表示刻度标记画在*轴上的位置 *TickLabel 数字文本字符串矩阵,用在*轴上标出刻度标记。如果矩阵中字符串不够, 就重复使用 *TickLabelMode MATLAB是否自动计算*TickLabel。如果*TickLabelMode设为缺省值 ‘auto’,就设置*TickLabel:如果设为‘manual',就直接使用 *TickLabel。设置*TickLabel,就自动把*TickLabelMode设为‘manual' *TickMode MATLAB是否自动计算*Tick。如果*TickMode设为缺省值‘auto',就 设置*Tick:如果设为‘manual',就直接使用*Tick。设置*Tick,就自 动把*TickMode设为‘manual' 轴对象中坐标轴上的文本和数字显示由下列属性控制。 表14-14控制坐标轴文本的属性 FontAngle 字符串表示坐标轴文本字体的角度,设定值可以为:‘norma1’(缺省 值)、‘ita1ic'和‘oblique FontName 字符串表示使用的字体 Fontsize 字体的大小,使用FontUnits中的单位,见下面。 FontUnits Fontsize中使用的字体大小单位,可以用下列选择:‘inches'、 centimeters'、‘normalized'、points'(缺省值)和‘pixels' Fontweight 坐标轴文本加黑,设置值可以为:‘1ight'、‘normal’(缺省值)、‘demi’ 和bold 坐标轴的区间可以用给定数据的最大值和最小值,每个刻度之间单位可以用缺省值1、2 或者5。可以通过属性‘xTick'和‘YTick’对刻度和格栅线进行操作。 ■例14.9 下面的程序给出如何来改变坐标轴刻度标记和格栅线。 x=[137]; %生成x向量 y=[692]; %和y向量 s1=subp1ot(2,2,1); %左上角建一个坐标系 plot(x,y); grid; %使用缺省的格栅线 title('Default');
(续) * C o l o r 位一个R G B三元组或者M AT L A B中一种预定义的颜色,表示 *轴的颜色。在* 方向的刻度标记、数字文本和格栅线都是这种颜色,缺省为‘ w h i t e’(白色) * D i r 位表示*轴的方向,值可以为‘normal’(缺省值)或者颠倒方向的‘reverse’ * G r i d 位是否在*方向画格栅线,值可以为‘ o n’或者‘o ff ’(缺省值)。使用命令 g r i d来画或清除在各方向上的格栅线,见命令集 1 3 2 * L a b e l 位*轴标志文本对象的句柄 * L i m 位向量[m i n m a x],表示*轴的最小和最大值 * L i m M o d e 位M AT L A B是否自动计算*L i m。如果*L i m M o d e设为缺省值‘a u t o’,就自 动计算*L i m;如果设为‘m a n u a l’,就直接使用*L i m。设置*L i m,就自动 把*L i m M o d e设为‘m a n u a l’ * S c a l e 位表示*轴的线性换算或者对数换算,值可以为‘ l i n e a r’或者‘l o g’ * T i c k 位是一个元素值单调递增的向量,表示刻度标记画在 *轴上的位置 * T i c k L a b e l 位数字文本字符串矩阵,用在 *轴上标出刻度标记。如果矩阵中字符串不够, 就重复使用 * T i c k L a b e l M o d e 位M AT L A B是否自动计算*T i c k L a b e l。如果*T i c k L a b e l M o d e设为缺省值 ‘a u t o’,就设置 *T i c k L a b e l;如果设为‘ m a n u a l’,就直接使用 *T i c k L a b e l。设置*T i c k L a b e l,就自动把*T i c k L a b e l M o d e设为‘m a n u a l’ * T i c k M o d e 位M AT L A B是否自动计算*T i c k。如果*T i c k M o d e设为缺省值‘a u t o’,就 设置*T i c k;如果设为‘m a n u a l’,就直接使用*T i c k。设置*T i c k,就自 动把*T i c k M o d e设为‘m a n u a l’ 轴对象中坐标轴上的文本和数字显示由下列属性控制。 表14-14 控制坐标轴文本的属性 FontAngle 位字符串表示坐标轴文本字体的角度,设定值可以为:‘n o r m a l’(缺省 值)、‘i t a l i c’和‘o b l i q u e’ F o n t N a m e 位字符串表示使用的字体 F o n t S i z e 位字体的大小,使用F o n t U n i t s中的单位,见下面。 F o n t U n i t s 位F o n t S i z e中使用的字体大小单位,可以用下列选择:‘i n c h e s’、 ‘c e n t i m e t e r s’、‘n o r m a l i z e d’、‘p o i n t s’(缺省值)和‘p i x e l s’ FontWeight 位坐标轴文本加黑,设置值可以为:‘light’、‘normal’(缺省值)、‘demi’ 和‘bold’ 坐标轴的区间可以用给定数据的最大值和最小值,每个刻度之间单位可以用缺省值 1、2 或者5。可以通过属性‘X T i c k’和‘Y T i c k’对刻度和格栅线进行操作。 ■ 例1 4 . 9 下面的程序给出如何来改变坐标轴刻度标记和格栅线。 2 6 6 M ATLAB 5 手册 下载 % 生成X向量 % 和y向量 % 左上角建一个坐标系 % 使用缺省的格栅线