7.1.3 二维图形注释命令
命令1 grid
功能 给二维或三维图形的坐标面增加分隔线。该命令会对当前坐标轴的Xgrid,Ygrid,Zgrid的属性有影响。
用法 grid on 给当前的坐标轴增加分隔线。
grid off 从当前的坐标轴中去掉分隔线。
grid 转换分隔线的显示与否的状态。
grid(axes_handle,on|off) 对指定的坐标轴axes_handle是否显示分隔线。
命令2 gtext
功能 在当前二维图形中用鼠标放置文字。当光标进入图形窗口时,会变成一个大十字,表明系统正等待用户的动作。
用法 gtext('string') 当光标位于一个图形窗口内时,等待用户单击鼠标或键盘。若按下鼠标或键盘,则在光标的位置放置给定的文字“string”
h = gtext('string') 当用户在鼠标指定的位置放置文字“string”后,返回一个text图形对象句柄给h。
命令3 legend
功能 在图形上添加图例。该命令对有多种图形对象类型(线条图,条形图,饼形图等)的窗口中显示一个图例。对于每一线条,图例会在用户给定的文字标签旁显示线条的线型,标记符号和颜色等。当所画的是区域(patch或surface对象)时,图例会在文字旁显示表面颜色。Matlab在一个坐标轴中仅仅显示一个图例。图例的位置有几个因素决定,像遮挡的对象等,用户可以用鼠标拖动图例到恰当的位置,双击标签可以进入标签编辑状态。
用法 legend('string1','string2',…) 用指定的文字string在当前坐标轴中对所给数据的每一部分显示一个图例。
legend(h,'string1','string2',…) 用指定的文字string在一个包含于句柄向量h中的图形显示图例。用给定的数据对相应的图形对象加上图例。
legend(string_matrix) 用字符矩阵参量string¬_matrix的每一行字符串作为标签。
legend(h,string_matrix) 用字符矩阵参量string¬_matrix的每一行字符串作为标签给包含于句柄向量h中的相应的图形对象加标签。
legend(axes_handle,…) 给由句柄axes_handle指定的坐标轴显示图例。
legend('off') 从当前的坐标轴,或是由axes-handle指定的坐标轴中除掉图例。
legend(axes_handle,'off') 从由axes_handle指定的坐标轴中除掉图例。
legend_handle = legend 返回当前坐标轴中的图例句柄,若坐标轴中没有图例存在,则返回空向量。
legend 对当前图形中所有的图例进行刷新。
legend(legend_handle) 对由句柄legend_handle指定的图例进行刷新。
legend(…,pos) 在指定的位置pos放置图例见表7-5。
表7-5
Pos取值 pos=-1 pos=0 Pos=1
图例位置 坐标轴之外的右边 坐标轴之内,有可能遮挡部分图形 坐标轴的右上角(缺省位置)
Pos取值 pos=2 pos=3 pos=4
图例位置 坐标轴的左上角 在坐标轴的左下角 坐标轴的右下角
h = legend(…) 返回图例的句柄向量。
[legend_handle,object_handles] = legend(…) 返回图例句柄,该句柄为坐标轴定义于图例中的图形对象、line对象、text对象的句柄。这些句柄允许用户对每个对象进行详细的操作。
例7-22
>>x = -pi:pi/20:pi;
>>plot(x,(cos(x)).^2,'rd',x,asin(x),'-.b')
>>h = legend('cos2x','asin',2);
图形结果为图7-22。
命令4 title
功能 给当前轴加上标题。每个axes图形对象可以有一个标题。标题定位于axes的上方正中央。
用法 title('string') 在当前坐标轴上方正中央放置字符串string作为标题
title(fname) 先执行能返回字符串的函数fname,然后在当前轴上方正中央放置返回的字符串作为标题
title(…,'PropertyName',PropertyValue,…) 对由命令title生成的text图形对象的属性进行设置
h = title(…) 返回作为标题的text对象句柄。
命令5 text
功能 在当前轴中创建text对象。函数text是创建text图形句柄的低级函数。可用该函数在图形中指定的位置上显示字符串。
用法 text(x,y,'string')在图形中指定的位置(x,y)上显示字符串string
text(x,y,z,'string') 在三维图形空间中的指定位置(x,y,z)上显示字符串string
text(x,y,z,’string’.'PropertyName',PropertyValue…) 对引号中的文字string定位于用坐标轴指定的位置,且对指定的属性进行设置。表7-6给出文字属性名、含义及属性值。
表7-6
属性名 属性说明 属性值
定义字符串
Editing 能否对文字进行编辑 有效值:on、off
缺省值:off
Interpretation TeX字符是否可用 有效值:tex、none
缺省值:tex
String 字符串(包括TeX字符串) 有效值:可见字符串
放置字符串
Extent text对象的范围(位置与大小) 有效值:[left, bottom, width, height]
HorizontalAlignment 文字水平方向的对齐方式 有效值:left(文本外框左边对齐,缺省对齐方式)、center(文本外框中间对齐)、right(文本外框右边对齐)
缺省值:left
Position 文字范围的位置 有效值:[x,y,z]直角坐标系
缺省值:[](空矩阵)
Rotation 文字对象的方位角度 有效值:标量(单位为度)
缺省值:0
Units 文字范围与位置的单位 有效值:pixels (屏幕上的像素点)、normalized (把屏幕看成一个长、宽为1的矩形)、inches(英寸)、centimeters(厘米)、points (图象点)、data
缺省值:data
VerticalAlignment 文字垂直方向的对齐方式 有效值:top (文本外框顶上对齐)、cap(文本字符顶上对齐)、middle(文本外框中间对齐)、baseline(文本字符底线齐)、bottom(文本外框底线对齐)
缺省值:middle
指定文字字体
FontAngle 设置斜体文字模式 有效值:normal(正常字体)、italic(斜体字)、oblique(斜角字)
缺省值:normal
FontName 设置文字字体名称 有效值:用户系统支持的字体名或者字符串FixedWidth。
缺省值为 Helvetica
FontSize 文字字体大小 有效值:结合字体单位的数值
缺省值为:10 points
FontUnits 设置属性FontSize的单位 有效值:points (1点=1/72英寸)、normalized(把父对象坐标轴作为一单位长的一个整体;当改变坐标轴的尺寸时,系统会自动改变字体的大小)、inches (英寸)、Centimeters(厘米)、Pixels(像素)
缺省值:points
FontWeight 设置文字字体的粗细 有效值:light(细字体)、normal(正常字体)、demi(黑体字)、Bold(黑体字)
缺省值:normal
控制文字外观
Clipping 设置坐标轴中矩形的剪辑模式 有效值:on、off
on:当文本超出坐标轴的矩形时,超出的部分不显示;
off:当文本超出坐标轴的矩形时,超出的部分显示。
缺省值:off
EraseMode 设置显示与擦除文字的模式。这些模式对生成动画系列与改进文字的显示效果很有好处。 有效值:normal、none、 xor、 background
缺省值:normal
SelectionHighlight 设置选中文字是否突出显示 有效值:on、off
缺省值:on
Visible 设置文字是否可见 有效值:on、off
缺省值:on
Color 设置文字颜色 有效的颜色值:ColorSpec
控制对文字对象的访问
HandleVisibility 设置文字对象句柄对其他函数是否可见 有效值:on、callback、off
缺省值:on
HitTest 设置文字对象能否成为当前对象(见图形CurrentObject属性) 有效值:on、off
缺省值:on
文字对象的一般信息
Children 文字对象的子对象(文字对象没有子对象) 有效值:[](即空矩阵)
Parent 文字对象的父对象(通常为axes对象) 有效值:axes的句柄
Seleted 设置文字是否显示出“选中”状态 有效值:on、off
缺省值:off
Tag 设置用户指定的标签 有效值:任何字符串
缺省值:’’(即空字符串)
Type 设置图形对象的类型(只读类型) 有效值:字符串’text’
UserData 设置用户指定数据 有效值:任何矩阵
缺省值:[](即空矩阵)
控制回调例行执行程序
BusyAction 设置如何处理对文字回调过程中断的句柄 有效值:cancel、queue
缺省值:queue
ButtonDownFcn 设置当鼠标在文字上单击时,程序做出的反应(即执行回调程序) 有效值:字符串
缺省值:' '(空字符串)
CreateFcn 设置当文字被创建时,程序做出的反应(即执行的回调程序) 有效值:字符串
缺省值:' '(空字符串)
DeleteFcn 设置当文字被删除(通过关闭或删除操作)时,程序做出的反应(即执行的回调程序) 有效值:字符串
缺省值:' '(空字符串)
Interruptible 设置回调过程是否可中断 有效值:on、off
缺省值:on(能中断)
UIContextMenu 设置与文字相关的菜单项 有效值:用户相关菜单句柄
h = text(…) 返回文字对象句柄的列向量,每一对象对应一句柄。该命令的其他使用形式中,将随意地返回这个输出参量。
例7-23
>>plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))
>>text(pi,0,’Zeros Point’)
>>grid on
图形结果为图7-23。
命令6 xlabel、ylabel
功能 给x、y轴贴上标签
用法 xlabel('string')、 ylabel(‘string’) 给当前轴对象中的x、y轴贴标签;注意:若再次执行xlabel或ylabel命令,则新的标签会覆盖旧的标签。
xlabel(fname)、ylabel(fname) 先执行函数fname,其返回一个字符串,然后在x、y轴旁边显示出来;
xlabel(…,'PropertyName',PropertyValue,…)、ylabel(…,’PropertyName’, PropertyValue)指定轴对象中的要控制的属性名和要改变的属性值,这些都是由xlabel或ylabel创建的text图形对象的成对值;
h = xlabel(…)、h = ylabel(…)返回作为标签的text对象的句柄。
7.2 三维图形
7.2.1 三维曲线、面填色命令
命令1 comet3
功能 三维空间中的彗星图。彗星图为一个三维的动画图像,彗星头(一个小圆圈)沿着数据指定的轨道前进,彗星体为跟在彗星头后面的一段痕迹,彗星轨道为整个函数所画的实曲线。注意一点的是,该彗星轨迹的显示模式EraseMode为none,所以用户不能打印出彗星轨迹(只能得到一个小圆圈),且若用户调整窗口大小,则彗星会消失。
用法 comet3(z) 用向量z中的数据显示一个三维彗星
comet3(x,y,z) 显示一个彗星通过数据x,y,z确定的三维曲线。
comet3(x,y,z,p) 指定彗星体的长度为:p*length(y)。
例7-24
>>t = -20*pi:pi/50:20*pi;
>>comet3((cos(2*t).^2).*sin(t),(sin(2*t).^2).*cos(t),t);
图形的结果为图7-24。
命令2 fill3
功能 用指定的颜色填充三维多边形。阴影类型为平面型和Gouraud型。
用法 fill3(X,Y,Z,C) 填充由参数x,y和z确定多边形。若x,y或z为矩阵,fill3生成n个多边形,其中n为矩阵的列数。在必要的时候,fill3会自动连接最后一个节点和第一个节点。以便能形成封闭的多边形。参数c指定颜色,这儿c为引用当前色图的下标向量或矩阵。若c为行向量,则c的维数必须等于x的列数和y的列数,若c为列向量,则c的维数必须等于矩阵x的行数和y 的行数。
fill3(X,Y,Z,ColorSpec) 用指定的颜色ColorSpec填充由x,y和z确定的多边形。
fill3(X1,Y1,Z1,C1,X2,Y2,Z2,C2,…) 对多边形的不同区域用不同的颜色进行填充。
fill3(…,'PropertyName',PropertyValue) 允许用户对特定的patch属性进行设置。
h = fill3(…) 返回patch图形对象的句柄向量,每一块(patch)对应一个句柄。
运算规则:
1.若X,Y,Z为同型的矩阵,fill3生成X,Y,Z中相同位置的元素确定的顶点,每一列生成一个多边形。
2.若只有X,Y或Z为矩阵,则fill3由列向量参数生成可用的同型矩阵。
3.若用户对填充的颜色指定为ColorSpec,则fill3生成阴影类型为flat-shaded的多边形,且设置块(patch)的属性FaceColor为RGB颜色形式的矩阵。
4.若用户用矩阵C指定颜色,命令fill3通过坐标轴属性Clim来调整C中的元素,在引用当前色图之前,用于指定颜色坐标轴的参数比例。
5.若参数C为一行向量,命令fill3生成带平面阴影(flat-shaded)的多边形,同时设置补片对象的面颜色(FaceColor)属性为flat。向量c中的每一元素成为每一补片对象的颜色数据(CData)属性的值。
6.若参数C为一矩阵,命令fill3生成带内插颜色的多边形,同时设置多边形补片对象的FaceColor属性为interp。命令fill3采用对多边形顶点色图的下标指定的颜色采用线性内插算法,同时多边形的颜色采用对顶点颜色用内插算法得到的颜色。矩阵C的每一列元素变成对应补片对象的Cdata属性值。
7.若参数C为一列向量,命令fill3先复制C的元素,使之成为所需维数的矩阵,再按上面的方法6进行计算。
例7-25
>>X = 10*rand(4);Y=10*rand(4);Z=10*rand(4);
>>C = rand(4);
>>fill3(X,Y,Z,C)
图形结果可能为图7-25。