新浪博客

MATLAB图形属性控制

2016-03-30 08:52阅读:

1、Matlab图形系统简介

Matlab的图形系统是面向对象的,图形对象之间的关系为父代与子代的关系。
MATLAB图形属性控制
每个图形对象都拥有自己的句柄 ( handle )。所有能创建图形对象的matlab函数都可给出所创建图形对象的句柄。
根(Root):只有一个,对应于计算机屏幕,其句柄为 0。其它图形对象都是root 的子对象。
图形窗口(Figure):数目不限,句柄为正整数。除根之外,其它对象都是figure的子对象。
其它图形对象(如坐标轴axis)的句柄为浮点数。
图形对象是由其属性来描述的。高层绘图函数对图形对象的描述一般是缺省的或由高层绘图函数自动设置。底层绘图函数用句柄设置图形对象的属性。​
句柄属性的设置与修改​
get 获得句柄图形对象的属性和返回某些对象的句柄值​
set 改变图形对象的属性​
delete(h) 删除句柄为h的图形对象
专用函数
gcf 返回当前窗口对象的句柄 Get Current Figure
gca 返回当前轴对象的句柄 Get Current Axes
gco 返回当前图形对象的句柄 Get Current Object
若一个对象的句柄已知,可以获取其'父'或'子'的句柄
f = get(h,'parent');
l = get(h,'children');

​2、根对象( Root )

Root 是关联计算机屏幕的一个图形对象。Matlab系统只有一个Root对象,它没有父对象,子对象是Figure。当启动Matlab时,Root对象就创建,用户无法再创建一个Root,也无法删除这个对象,Root的句柄值为0。​
MATLAB图形属性控制
root 的 ScreenSize 属性:只读属性,默认单位为像素( pixel ),由屏幕的左下角坐标、宽度、高度四个参数确定。
>> ss = get(0,'ScreenSize'),返回行向量 ss = [ left, bottom, width, height ]
MATLAB图形属性控制

3、图形窗口 ( Figure)

Figure对象是Matlab系统中显示的图形窗口。用户可建立任意多个Figure窗。所有Figure对象的父对象都是Root对象,而其他所有Matlab图形对象都是Figure的子对象。
​​ figure( ) 创建图形窗口
close( ) 删除图形窗口
clf( ) 图形图形窗口中的子对象
gcf 返回当前窗口对象的句柄

创建图形窗口 :figure

figure 利用缺省属性值来创建新的图形窗口对象。
figure('PropertyName',propertyvalue,...) 利用指定的属性值来创建图形窗口对象。对于用户没有显式地定义的属性值,将其设置为默认的属性值。
figure(h) 如果句柄h所指示的图形窗口对象存在,则将其设置为当前窗口,并将其移动到屏幕的最前方。如果h所指示的图形窗口不存在且h是个整数 (h >= 1),则创建一个图形窗口,并将窗口的句柄设置为h;如果h不是整数,则返回错误信息。
h = figure(...) 返回图形窗口对象的句柄。
备注:为了在一个已有的图形窗口中绘制图形,这个窗口必须是激活的,或者是当前的图形窗口。

​删除图形窗口:close

close 删除当前figure,相当于close(gcf)
close(h) 删除由h确定的figure。如果h是一个向量或矩阵,就删除由h指定的所有图像
close name 删除指定名称的figure
close all 删除所有句柄没有隐藏的figure
close all hidden 删除所有figure,包括句柄隐藏的。
status = close(...) 如果指定的figure已经被删除则返回1,否则为0。

清除图形窗口中的子对象:clf

clf 删除当前图形窗口中、句柄未被隐藏(即它们的HandleVisibility属性为on)的图形对象。
clf('reset') clf reset 删除当前图形窗口中的所有图形对象,无论其句柄是否被隐藏,同时将图形窗口的属性(除Position, Units, PaperPosition, PaperUnits外)恢复为默认值。​
clf(fig)clf(fig,'reset') 清除由句柄为fig的图形窗口中的内容。
figure_handle = clf(...) 返回图形窗口的句柄。
MATLAB图形属性控制

figure 的 Position 属性

Position由行向量 [ left, bottom, width, height ] 确定
MATLAB图形属性控制
例:figure的Position, Color, … 属性
x = 0:pi/10:2*pi
ss = get(0,'ScreenSize')
W = ss(3);
H = ss(4);
figure(1)
set(gcf,'Position',[W/2,H/2,W/3,H/4])
set(gcf,'Name','sin(x)的图像','NumberTitle','off')
plot(x,sin(x))
h = figure
set(h,'Position',[W/2,H/10,W/3,H/4])
set(h,'Name','cos(x)的图像','Color',[1,1,1])
set(1,'Toolbar','none','Menubar','none')
plot(x,cos(x))
MATLAB图形属性控制

figure 的 NextPlot 属性

MATLAB图形属性控制
​​例如:
MATLAB图形属性控制

figure 的Visible属性:

若将figure 的 Visible 属性设为off,则在某些情况下可以大幅度提高程序运行的速度。譬如,在保存图像的时候并不需要绘制图像,此时即可将Visible属性关掉,即变成后台绘制。

4、坐标轴 (axes )

Axes对象:在图形窗口中定义一个画图区域,父对象是Figure,子对象包括line对象、image对象、patch对象、surface对象、light对象和text对象等。
常用函数
​​ axes( ) 创建坐标轴
cla 清除坐标轴中的子对象​
gca 返回当前轴对象的句柄
xlim( ) / ylim( ) / zlim( ) 设置x / y / z 轴刻度范围
grid 设置坐标轴网格线的显示

创建坐标轴 axes( )

axes 在当前figure内使用默认属性值来创建一个坐标轴对象。
axes('PropertyName',propertyvalue,...) 创建具有指定的属性值的坐标轴对象。对于其它未明确指定的属性值,MATLAB采用这些属性的默认值。​
axes(h) 当句柄为h的坐标轴对象存在时,设置该坐标轴为当前坐标轴,并使含有该坐标轴的图形窗口对象获得焦点。同时,将该坐标轴的句柄h 置于图形窗口的Children属性值的第一位,并把图形窗口的CurrentAxes属性值设置为h。当前坐标轴为用户用来绘制图像、线条、补片、矩形、曲面以及文本图形对象的目标坐标轴。如果用户想将坐标轴设置为当前坐标轴同时又不改变图形窗口的状态,则可以设置图形窗口的CurrentObject属性:set(figure_handle,'CurrentAxes',axes_handle), 这在一个图形窗口被最小化或者在其它窗口的后面,而用户又想设置它所包含的坐标轴为当前坐标轴时是非常有用的。
h = axes(...) 返回创建的坐标轴对象的句柄。
MATLAB图形属性控制

axes 的 Position 属性

Position由行向量 [ left, bottom, width, height ] 确定
MATLAB图形属性控制

axes 的 NextPlot 属性

MATLAB图形属性控制
例:axes的属性
figure
h1 = axes('position',[0.08,0.1,0.4,0.4])
h2 = axes('position',[0.6,0.1,0.35,0.7])
h3 = axes('position',[0.08,0.6,0.4,0.3])
set(h1,'Color',[0.5,0.5,0.5],'XColor',[1,0,0],'LineWidth',2)
set(h1,'TickDir','out','TickLength',[0.04,0.03])
set(h2,'TickLength',[0.06,0.02])
MATLAB图形属性控制
MATLAB图形属性控制
例:XLim, XTick, XTickLabel设置
MATLAB图形属性控制

清除坐标轴中的子对象:cla

cla 删除当前坐标系下的所有未设置隐藏的图形对象。
cla reset 删除当前坐标系下所有图形对象,不论是否设置了隐藏。同时将axes的属性(除Position, Units外)设置为默认值。
cla(ax) cla(ax,'reset') 清除由句柄ax所指坐标系。

设置坐标轴的常用属性:axis( )​

v = axis 返回包含当前坐标范围的行向量v, v具有四个或六个元素,这取决于当前坐标轴是二维的还是三维的。
axis([xmin, xmax, ymin, ymax]) 2d
axis([xmin, xmax, ymin, ymax, zmin, zmax]) 3d
人工设置坐标范围,允许取 inf 或 –inf ,即坐标上限或下限时自动产生的,即坐标范围'半自动确定'。
axis auto 基于x、y和z的最大值和最小值来自动设置坐标轴范围。用户可以只限定某一个坐标轴,如:axis 'auto x' 用来限定x轴的范围;axis 'auto yz' 用来限定y轴和z轴的范围。
axis manual axis(axis) 冻结当前坐标轴范围。如果打开了hold on命令,则后续的图形都使用同样的坐标范围。该函数设置XLimMode、YLimMode和ZLimMode属性为manual。
axis tight 采用紧密模式设置当前坐标轴范围,即以用户数据范围为坐标轴范围。
axis fill 设置坐标轴范围及PlotBoxAspectRatio属性使得坐标轴填充由 position 确定的矩形局域。
只有PlotBoxAspectRatioMode 或 DataAspectRatioMode属性值为 manual时,该方法才起作用。
axis equal 设置当前坐标轴的横纵轴具有相同的单位长度。axis image 功能与axis equal相同。但坐标轴的边框紧贴在数据的四周。多用来显示图片。 axis square 调整坐标系的x、y和z轴,使它们有相同的长度。
axis normal 自动调整横纵轴比例,使图形显示达到最佳效果

我的更多文章

下载客户端阅读体验更佳

APP专享