一、图形窗口与坐标轴
1、图形对象句柄
(1)句柄概念
在MATLAB中,每一个具体的图形都是有若干个不同的图形对象组成的,用句柄来标识对象,通过句柄来访问相应对象的属性。
例子:绘制多个图形,并保持图形句柄
t=0:pi/10:2*pi; h1=plot3(t+pi,t-2*pi,sin(t),'r'); hold on [x,y]=meshgrid(t); z=sin(x); h2=mesh(t-2*pi,t+pi,z); [x3,y3,z3]=cylinder(t); h3=surf(x3,y3,z3);
(2)访问图形对象
访问图形对象是指获取或设置图形对象的属性。不同图形对象具有的属性不同,但访问方法一样。
对象句柄.属性名
例子:
(3)获取特定图形对象句柄的函数
- gcf:获取当前窗口的句柄。
- gca:获取当前坐标区的句柄。
- gco:获取最近被选中的图形对象的句柄。
- findobj:按照指定的属性来获取图形对象的句柄。
2、图形对象属性
(1)图形对象的常用公共属性
- Children属性:该对象的所有子对象的句柄组成的一个向量。
- Parent属性:该对象的父对象的句柄。
- Type属性:对象的类型,这是一个只读属性。
- Tag属性:用于给对象定义一个标识符。
例子:分别在两个子图中绘制曲线和曲面。然后设置子图1的背景颜色为黄色,曲线线条颜色为红色。设置子图2背景色为青色。
subplot(1,2,1) h1=fplot(@(t)t.*sin(t),@(t)t.*cos(t),[0,6*pi]); axis equal subplot(1,2,2) [x,y,z]=peaks(20); h2=mesh(x,y,z); h10=h1.Parent; h10.Color='y'; h1.Color='r'; h2.Parent.Color='cyan';
(2)图形对象的常用动态属性
- KeyPressFcn属性:定义按下键盘按键事件的响应。
- CreateFcn属性:定义创建图形对象时做出的响应。
- DeleteFcn属性:定义取消图形对象时做出的响应。
- WindowButtonDownFcn或ButtonDownFcn属性:定义鼠标键按下事件的响应。
3、图形窗口的操作
(1)建立图形窗口对象
MATLAB通过figure函数来创建窗口对象,格式如下:
- 句柄变量=figure(属性1,属性值1,属性2,属性值2,……)
其中属性用于设置图形窗口的特征。 - 句柄变量=figure
按MATLAB默认的属性值建立图形窗口。 - figure(窗口句柄)
设定该句柄对应得窗口为当前窗口。
(2)图形窗口属性 - MenuBar属性:控制图形窗口是否具有菜单条,其取值为’none’或’figure’。
- Name属性:指定图形窗口得标题。
- NumberTitle属性:决定在图形窗口的标题是否以‘Figure n:’为标题前缀。
- Color属性:设定图形窗口背景得颜色。
- Position属性:定义图形窗口对象在屏幕上的位置和大小,值是一个4元行向量:[x,y,w,h]
- Units属性:定义图形窗口使用的度量单位,将影响一切定义大小的属性项。
– ‘pixels’:指定度量单位为像素(默认值)。
– ‘inches’:指定度量单位为英寸。
– ‘centimeters’:指定度量单位为厘米。
–‘points’:指定度量单位为磅。
– ‘normalized’:指定用相对单位。
例子:建立一个图形窗口。该图形窗口没有菜单条,标题名为“图形窗口示例”,起始于屏幕左下角、宽度和高度分别为300像素点和150像素点,背景颜色为青色,且当用户从键盘按下任意一个键时,然后在窗口中单击鼠标左键,在鼠标指针所在位置将显示“Hello ,World!”
hf=figure;%按MATLAB默认的属性值建立图形窗口 hf.Color=[0,1,1];%窗口背景颜色为青色 hf.Position=[1,1,300,150];%指定图形窗口位置 hf.Name='图形窗口示例';%指定图形窗口的名称 hf.NumberTitle='off';%图形窗口的标题不以‘Figure n:’为标题前缀 hf.MenuBar='none';%图形窗口不具有菜单条 hf.ButtonDownFcn='gtext("Hello World!")';%定义鼠标键按下事件的响应
4、坐标轴对象的操作
(1)建立坐标轴对象
使用axes函数,格式如下:
- 句柄变量=axes(属性1,属性值1,属性2,属性值2,……),其中属性用于设置坐标轴的外观和行为。
- 句柄变量=axes,按MATLAB默认的属性值在当前图形窗口创建坐标轴。
- axes(坐标轴句柄),设定该句柄代表的坐标轴为当前的坐标轴。
(2)坐标轴对象的属性
- Position属性:定义坐标轴在图形窗口中的位置和大小。
- Units属性:定义坐标轴使用的度量单位,默认是‘normalized’。
- Box属性:决定坐标轴是否带有边框,可取值是‘on’或者‘off’。‘off’是默认值。
- GridLineStyle属性:用于定义网格线的类型,可取值是‘:’(默认值)、‘-’、‘-.’、‘–’、‘none’。
- Title属性:用于对坐标轴标题对象进行操作,取值是通过title函数建立的标题对象的句柄。
- XLabel、YLabel、Zlabel数学:取值分别是通过xlabel、ylabel、zlabel函数建立的标签对象的句柄。
- XLim、YLim、ZLim属性:分别定义各坐标轴的下限和上限,取值是2元向量[Lmin,Lmax],默认值是[0,1]。
- XScale、YScale、ZScale属性:定义各坐标轴的刻度类型。可取值是‘linear’、‘log’。
- View属性:定义视点,取值是2元向量[az,el],az定义方位角,el定义仰角。坐标轴默认方位角是0°,仰角是90°。
例子:利用坐标轴对象实现图形窗口的分割。
ha=axes('Position',[0.1,0.1,0.7,0.7]);%创建坐标轴,原点位于窗口0.1宽和0.7高交点处,坐标轴宽度和高度均为窗口的0.7 contour(peaks(20))%等高线 ha.Title=title('等高线'); ha.YLabel=ylabel('南北向'); ha.XLabel=xlabel('东西向'); hb=axes('Position',[0.65,0.7,0.28,0.28]); surf(peaks); hb.View=[-30,45];
- ColorOrder属性:用于设置多条曲线的颜色顺序,是一个n*3矩阵,每行用RGB三元组表示一种颜色,默认n为7.
例子:定义包含4种颜色的ColorOrder属性,绘制6条曲线。
x=[0,0];y=[0,1]; ha=axes; ha.ColorOrder=[0,0,0;1,0,0;0,1,0;0,0,1];%定义四种颜色 hold on plot(x,y,x+0.5,y,x+1,y,x+1.5,y,x+2,y,x+2.5,y); ha.XLim=[-0.2,3]; ha.YLim=[-0.2,1.2];
二、曲线与曲面对象
1、曲线对像
(1)建立曲线对象
line函数的调用格式:
句柄变量=line(x,y,z,属性1,属性值1,属性2,属性值2,……)
其中,x,y,z存储数据点的坐标,与plot、plot3函数含义相同。
(2)曲线对象常用属性
- Color属性:定义曲线的颜色,默认值为[0 0 0]。
- LineStyle属性:定义线型,默认为’-’。
- LineWidth属性:定义线宽,默认值为0.5磅。
- Marker属性:定义数据点标记符号,默认值为’none’。
- MarkerSize属性:定义数据点标记符号的大小,默认值为6磅。
- XData、YData、ZData属性:用于设置3个坐标轴的数据源。
例子:利用曲线对象绘制五环图案
t=-0.1:0.1:2*pi; x=cos(t);y=sin(t); line(x,y,'Color','b') line(x+1.2,y-1,'Color','y') line(x+2.4,y,'Color','k') line(x+3.6,y-1,'Color','g') line(x+4.8,y,'Color','r') ha=gca;%获取当前坐标区的属性 for n=1:size(ha.Children)%将子对象(即所有线条)的线宽设置为5磅 ha.Children(n).LineWidth=5; end ha.XLim=[-2,7]; ha.YLim=[-3,2];
2、曲面对象
(1)建立曲面对象
使用surface函数,调用格式为:
句柄变量=surface(x,y,z,c,属性1,属性值1,属性2,属性值2,……)
其中,x,y,z存储数据点的坐标,与mesh、surf函数含义相同;c用于指定在不同高度下的曲面颜色。
surf函数每调用一次,就会刷新坐标轴,清空原有图形,在绘制新的图形。而surface函数生成的曲面则在已有图形上叠加显示。
利用surface函数建立的曲面对象,默认视点在图形正上方,即方位角为0°,仰角为90°。
(2)与曲面形态有关的属性
- FaceColor属性:定义曲面网格片的颜色,可取值:
– ‘flat’:每一个网格片用单一颜色填充。
– ‘interp’:用渐变方式填充网格片。
– ‘none’:网格片无颜色。
– ‘texturemap’:用Cdata属性定义的颜色填充网格片。
– RGB向量或代表颜色的字符
- EdgeColor属性:定义曲面网格线的颜色。
例子:利用曲面对象绘制立体圆环,圆环方程为:
r=linspace(0,2*pi,100); [u,v]=meshgrid(r); x=(8+3*cos(v)).*cos(u); y=(8+3*cos(v)).*sin(u); z=3*sin(v); axes('view',[-37.5,30]); hs=surface(x,y,z); axis equal; hs.EdgeColor='none'; hs.FaceColor='interp';
3、光照处理
(1)创建光源对象
light函数的调用格式:
对象句柄=light(属性1,属性值1,属性2,属性值2,……),其中属性指定光源的特性。
(2)光源对象的属性
- Color属性:设置光的颜色。
- Style属性:设置光源类型,其取值为‘infinite’(默认值)或‘local’。
- Position属性:指定光源位置,值是一个3元向量。
(3)设置光照模式
利用lighting命令可以设置光照模式,格式如下:
lighting 选项
其中,选项可取值:
- flat:使得入射光均匀洒落在图形对象的每个面上(默认值)。
- gouraud:先对顶点颜色插补,再对顶点勾画的面上颜色进行插补。
- phong:对顶点处的法线插值,再计算各个像素的反光。
- none:关闭所有光源。
例子:绘制光照处理后的圆环面并观察不同光照模式下的效果。
r=linspace(0,2*pi,100);[u,v]=meshgrid(r); x=(8+3*cos(v)).*cos(u);y=(8+3*cos(v)).*sin(u);z=3*sin(v); axes('Position',[0.05,0.675,1.0,0.3],'view',[-37.5,30]); hs1=surface(x,y,z);axis equal; hs1.EdgeColor='none';hs1.FaceColor='interp'; axes('Position',[0.05,0.35,1.0,0.3],'view',[-37.5,30]); hs2=surface(x,y,z);axis equal; hs2.EdgeColor='none';hs2.FaceColor='interp'; light('Position',[0,0,8])%入射光源[0,0,8] lighting flat%均匀洒落 axes('Position',[0.05,0.025,1.0,0.3],'view',[-37.5,30]); hs2=surface(x,y,z);axis equal; hs2.EdgeColor='none';hs2.FaceColor='interp'; light('Position',[0,0,8])%入射光源[0,0,8] lighting phong%顶点插值处理
4、图形对象的反射特性
- SpecularStrength属性:控制对象表面镜面反射的强度,属性值取0~1之间的数,默认为0.9。
- DiffuseStrength属性:控制对象表面漫反射的强度,属性值取0~1之间的数,默认为0.6。
- AmbientStrength属性:确定环境光的强度,属性值取0~1之间的数,默认为0.3。
- SpecularExponent属性:控制光的强度,属性值取0~1之间的数,默认为0.3。
- BackFaceLighting属性:控制对象内表面和外表面的差别,取值为:
– ‘unlit’
– ‘lit’
–‘reverselit’(默认值)