句柄图形对象
(1)
function my_plot
x=1:10
y=peaks(10)
%Z = peaks(n);returns an n-by-n matrix.
cax=newplot
%newplot prepares a figure and axes for subsequent graphics commands.
%h = newplot prepares a figure and axes for subsequent graphics commands and returns a handle to the current axes.
LSO=['- ';'--';': ';'-.']
%此处第一项与第三项要加空格,使得各行元素相等
set(cax,'FontName','Times','FontAngle','italic')
%设置图形坐标轴的字体与字体倾斜角度
set(get(cax,'Parent'),'MenuBar','none')%关闭工具栏
line_handles=line(x,y,'Color','b')
%将10条曲线利用直线全部画出,并返回直线句柄向量,10条曲线对应10个句柄值
%所以该句柄向量一共有10个元素
style=1
for i=1:length(line_handles)
if style>length(LSO)
style=1
end
set(line_handles(i),'LineStyle',LSO(style,:)) %设置直线属性
style=style+1
end
grid on
(2)
function my_plot3(x,y,z)
cax=newplot
hold_state=ishold
%检测当前的hold状态
LSO=['- ';'--';': ';'-.']
nargin
if nargin==2
%nargin是用来判断输入变量个数的函数,这样就可以针对不同的情况执行不同的功能。
%通常可以用他来设定一些默认值,如下面的函数。例子,函数test1的功能是输出a和b的和。
%如果只输入一个变量,则认为另一个变量为0,如果两个变量都没有输入,则默认两者均为0。
%function y=test1(a,b)
%if nargin==0
%a=0;b=0;
%elseif nargin==1
%b=0;
%end
y=a+b;
hlines=line(x,y,'Color','k')
if ~hold_state
%如果hold为off时,改变视图
view(2)
end
elseif nargin==3
hlines=line(x,y,z,'Color','k')
if ~hold_state
%如果hold为off时,改变视图
view(3)
end
end
ls=1
for hindex=1:length(hlines)
if ls>length(LSO)
ls=1
end
set(hlines(hindex),'LineStyle',LSO(ls,:)) ls=ls+1
end
(3)
function visit_handle
x=0:15
y=[1.5*cos(x);4*exp(-0.1*x).*cos(x);exp(0.05*x).*cos(x)]
h=stem(x,y')
%注意转换成列向量
axis([0,16,-4,4])
set(h(1),'Color','black','Marker','o','Tag','Decaying Exponentail')
%h(1)表示Y第一行元素在图形中的属性
set(h(2),'Color','black','Marker','square','Tag','Growing Exponentail')
%Marker表示元素点表示方法,三列标识都不同
set(h(3),'Color','black','Marker','*','Tag','Steady State ') %图形对象有句柄,是一个数;GUI里的控件有tag,是一个字符串。都是独一无二的标识。
%h = plot(sin(0:.01:2*pi);返回的h是曲线的句柄,它没有tag 比如某个文本的tag值为t1,设置其内容为hello,则可以这么写
set(handles.t1,'string','hello');
set(findobj(gca,'-depth',1,'Type','line'),'LineStytle','--' )%将图形中所有属性为直线的对象变为虚线
h=findobj('-regexp','Tag','^(?!Steady State$).')
%返回所有正则表达式Tag为Steady State属性的对象
set(h,{'MarkerSize'},num2cell(cell2mat(get(h,'MarkerSize')) +2))
%改变上述属性对象的标记大小
h=findobj('type','line','Marker','none','-and','-not','Line Style','--')
%返回线性为直线没有标记并且线性不是虚线的对象
set(h,'Color','red')
%改变上述对象的颜色
(4)
function setup_axes
h=axes('Color',[0.9,0.9,0.9],...
'GridLineStyle','--',...
'ZTickLabel','-1|Z=0 Plane|+1',...
'FontName','times',...
'FontAngle','italic',...
'FontSize',14,...
'XColor',[0 0 0.7],...
'YColor',[0 0 0.7],...
'ZColor',[0 0 0.7])
set(get(h,'XLabel'),'String','Value of X')
set(get(h,'YLabel'),'String','Value of Y')
set(get(h,'Title'),'String','\fontname{times}\itZ=f(x,y)') %设置标题Z=f(x,y)的字形
set(get(h,'XLabel'),'String','Value of X',...
'FontName','times',...
'FontAngle','italic',...
'FontSize',14)
(5)
function onefigure_severeaxes
%在坐标轴外放置文本
h=axes('Position',[0 0 1 1],'Visible','off') %对该坐标轴不可见
axes('Position',[0.25 0.1 0.7 0.8])
t=0:900
plot(t,0.25*exp(-0.005*t))
str(1)={'Plot of the function:'}
str(2)={' y=A{\ite}^{-\alpha{\itt}} '}
%注意字符串书写格式
str(3)={'With the values:'}
str(3)={' A=0.25'}
str(4)={' \alpha=0.005 '}
%特殊字符前加\
str(5)={' t=0:900 '}
set(gcf,'CurrentAxes',h)
text(0.025,0.6,str,'FontSize',12)
%在同一个图形中显示不同缩放尺度的图形
h(1)=axes('Position',[0 0 1 1])
sphere
h(2)=axes('Position',[0 0 0.4 0.6]) sphere
h(3)=axes('Position',[0 0.5 0.5 0.5]) sphere
h(4)=axes('Position',[0.5 0 0.4 0.4]) sphere
h(5)=axes('Position',[0.5 0.5 0.5 0.3]) sphere
set(h,'Visible','off')
%显示双坐标轴
x1=[0:0.1:40]
y1=4.*cos(x1)./(x1+2)
x2=[1:0.2:20]
y2=x2.^2./x2.^3
%显示第一个坐标轴对象
h11=line(x1,y1,'Color','r') ax1=gca
set(ax1,'XColor','r','YColor','r')
%添加第二个坐标轴显示对象
ax2=axes('Position',get(ax1,'Position'),...
'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none',...
'XColor','k','YColor','k')
h12=line(x2,y2,'Color','k','Parent',ax2)
xlimist1=get(ax1,'Xlim')
ylimist1=get(ax1,'Ylim')
xlinc1=(xlimist1(2)-xlimist1(1))/5
ylinc1=(ylimist1(2)-ylimist1(1))/5
xlimist2=get(ax2,'Xlim')
ylimist2=get(ax2,'Ylim')
xlinc2=(xlimist2(2)-xlimist2(1))/5
ylinc2=(ylimist2(2)-ylimist2(1))/5
%设置标度显示
set(ax1,'XTick',[xlimist1(1):xlinc1:xlimist1(2)],... 'YTick',[ylimist1(1):ylinc1:ylimist1(2)])
set(ax2,'XTick',[xlimist2(1):xlinc2:xlimist2(2)],... 'YTick',[ylimist2(1):ylinc2:ylimist2(2)])
grid on
(6)
t=0:pi/20:2*pi
s=sin(t)
c=cos(t)
%%设置axes对象的Color属性
figh=figure('Position',[30 100 800 350],...
'DefaultAxesColor',[0.8 0.8 0.8])
%%position [left bottom width height],set(gca,'Units') %%[inches | centimeters | points | pixels]
axh1=subplot(1,2,1)
grid on
%%设置第一个Axes对象的LineStyle属性
set(axh1,'DefaultLineLineStyle','-.')
line('XData',t,'YData',s)
line('XData',t,'YData',c)
text('Position',[3 0.4],'String','Sine')
text('Position',[2 -0.3],'String','Cosine',...
'HorizontalAlignment','right') %文字水平对齐
axh2=subplot(1,2,2)
grid on
%%设置第二个Axes对象的文字旋转属性
set(axh2,'DefaultTextRotation',90)
%文字旋转90度
line('XData',t,'YData',s)
line('XData',t,'YData',c)
text('Position',[3 0.4],'String','Sine')
text('Position',[2,0.3],'String','Cosine',...
'HorizontalAlignment','right')
Z=peaks
plot(1:49,Z(4:7,:))
close
set(0,'DefaultAxesColorOrder',[0 0 0],...
'DefaultAxesLineStyleOrder','-|--|:|-.') %设置属性默认值,坐标轴颜色顺序,曲线线性顺序plot(1:49,Z(4:7,:))
set(0,'DefaultAxesColorOrder','remove',...
'DefaultAxesLineStyleOrder','remove')
%删除属性默认值
set(0,'DefaultSurfaceEdgeColor','k') h=surface(peaks)
set(gcf,DefaultSurfaceEdgeColor','g') set(h,'EdgeColor')
(7)
function copy_detele_obj
x=0:0.01:6.28
y=sin(x)
figure
plot(x,y)
text_handle=text('String','\{5\pi\div4,sin(5\pi\div4)\}\rightarrow',...
'Position',[5*pi/4,sin(5*pi/4),0],'HorizontalAlignment','right') %创建text对象句柄,将该句柄复制到其他图形中。
x1=0.5:0.01:6.78
y1=sin(x1)
figure
plot(x1,y1)
copyobj(text_handle,gca)
%删除图形句柄对象,删除y2第一列与第二列的曲线
x2=0:0.05:50
y2=[1.5*cos(x2);4*exp(-0.1*x2).*cos(x2);exp(0.05*x2).*cos(x2)]' figure
h=plot(x2,y2)
delete(h(1:2))
2016/8/21
ax = get(gcf,'Children');
set(ax(1), 'xlim', [4085, 4100]);对输出图像进行命令行缩放功能
句柄式图形常用函数: (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对象的属性篇
matlab图形句柄属性 句柄式图形常用函数: (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 对象是指屏幕(root对象)中产生的窗口,并且MATLAB允许用Figure 函数建立任意数目的窗口,但所有的绘图函数,如plot surf等,如果窗口未存在时,会自动建立一个新的窗口;每个窗口则构成一个Figure 对象。
句柄图形对象
(1) function my_plot x=1:10 y=peaks(10) %Z = peaks(n);returns an n-by-n matrix. cax=newplot %newplot prepares a figure and axes for subsequent graphics commands. %h = newplot prepares a figure and axes for subsequent graphics commands and returns a handle to the current axes. LSO=['- ';'--';': ';'-.'] %此处第一项与第三项要加空格,使得各行元素相等 set(cax,'FontName','Times','FontAngle','italic') %设置图形坐标轴的字体与字体倾斜角度 set(get(cax,'Parent'),'MenuBar','none')%关闭工具栏 line_handles=line(x,y,'Color','b') %将10条曲线利用直线全部画出,并返回直线句柄向量,10条曲线对应10个句柄值 %所以该句柄向量一共有10个元素 style=1 for i=1:length(line_handles) if style>length(LSO)
style=1 end set(line_handles(i),'LineStyle',LSO(style,:)) %设置直线属性 style=style+1 end grid on
第七章 MATLAB图形句柄 与第四章的高层绘图指令相比,本章的内容更深入MATLAB可视化功能的内核。编写本章的目的有两个:(1)使读者更深入地理解高层绘图指令,从而可绘制出更精细更生动更个性的图形;(2)使读者能利用低层图形指令和图形对象属性开发专用绘图函数。 本章在内容安排上有如下考虑: 保证概念、结构和方法的完整性:由表及里、由浅入深的原则系统阐述句柄图形体系、图形对象、属性和操作方法。 突出要点、新点和难点:句柄图形体系有11个基本图形对象,每个对象的属性少则20几个,多则近百个。对此,MATLAB自带资料有详尽的文字说明。因此,本章只对最常用的、不可或缺的、以及较难掌握的内容进行说明。 强调“可操作性”体现“范例引导概念”的本书宗旨:针对MATLAB自带资料缺少完整、可操作应用实例的弱点,本章设计了部分算例,读者通过阅读或操作这些范例,可掌握各指令、属性之间的有机配合,从而更具体更真切地理解句柄图形。 第一节图形对象及其句柄 MATLAB语言的句柄绘图可以对图形各基本对象进行更为细腻的修饰,可以产生更为复杂的图形,而且为动态图形的制作奠定了基础。 高层绘图与底层绘图的区别 (1)高层绘图函数—是对整个图形进行操作的,图形每一部分的属性都是按缺省方式设置的,充分体现了MATLAB语言的实用性; (2)底层绘图函数—可以定制图形,对图形的每一部分进行控制,用户可以用来开发用户界面以及各专业的专用图形。充分体现了MATLAB语言的开发性。 一、图形对象 MATLAB的图形对象包括计算机屏幕、图形窗口、坐标轴、用户菜单、用户控件、曲线、曲面、文字、图像、光源、区域块和方框等。系统将每一个对象按树型结构组织起来。 例: 河流断面面积计算程序(exam7_1.m)。 a=[13.0000,8.7700,8.7700,4.7700,4.2700,4.6700,4.1700,2.9700,1.7700,1.0700,1 .6700,1.6700,2.5700,4.6700,3.9700,14.7000] %河底高程 x=[0,80,190,245,290,330,400,460,535,580,620,665,730,810,860,890] %起点距 Hf_1=figure('NumberTitle','off','name','断面面积计算','Position',[50,80,700,460]) %图形标题 plot(x,a) %绘断面图 set(gca,'Xdir','Normal','Ydir','Normal','Box','off'); s=input('请输入水位值:'); ss=s-a; sa=length(a) for i=1:sa; if ss(i)<0; sss(i)=0; else sss(i)=ss(i); end
第10章 MATLAB图形对象句柄 习题10 一、选择题 1.MA TLAB图形系统的根对象是指()。A A.计算机屏幕B.图形窗口 C.坐标轴D.用户界面对象 2.以下不正确的选项是()。D A.坐标轴是图形窗口对象的子对象 B.图形对象的句柄变量相当于对象名 C.可以通过对象的句柄来设置或获取对象的属性 D.gcf函数可以获取当前对象的句柄 3.使用figure 函数建立图形窗口时,默认的标题是()。C A.图形窗口n(n是数字)B.Fig n(n是数字) C.Figure n(n是数字)D.Figure Window n(n是数字) 4.用于决定坐标轴对象是否带边框的属性是()。A A.Box B.Grid C.Position D.Font 5.下列命令中,除一条命令外其他三条命令等价,这一条命令是()。B A.line(x,y,'Color','r'); B.line(x,y,'r'); C.plot(x,y,'Color','r'); D.plot(x,y,'r'); 6.命令patch([0,1/2,1], [0,tan(pi/3)/2,0], [1,0,0])执行后得到的图形是()。C A.红色的等腰三角形B.绿色的等腰三角形 C.红色的等边三角形D.白色的四边形 二、填空题 1.H代表一根曲线,要设置曲线的属性可以使用函数,要获取曲线的属性可以使用函数。set(H,属性名,属性值),get(H,属性名) 2.MA TLAB中表示颜色可以用表示,也可以用表示。 字符,RGB三元组 3.用于标识图形对象的属性是属性,可以通过函数获取该属性所对应图形对象的句柄。在屏幕对象及其子对象中查找标识符为ppp的对象,并返回其句柄,可使用命令。Tag,findobj,hf=findobj(0,'Tag','ppp') 4.使用axes 函数可以在中创建对象。当前图形窗口,坐标轴 5.下列命令执行后得到的图形是。要绘制圆,则需要将该图形的属性设置为1。正方形,Curvature
matlab 句柄学习 句柄式图形常用函数: (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的对象的属性名称下所有可设置的属性值