参考书籍
《matlab 程序设计与综合应用》张德丰等著 感谢张老师的书籍,让我领略到matlab的便捷
《MATLAB技术大全》葛超等编著 感谢葛老师的书籍,让我领略到matlab的高效
图形对象的类型(typeoffigureobject)如下。
(1)根屏幕(rootscreen):在层次的最顶层是根对象,相当于计算机屏幕,根对象只有一个,根对象不能被建立,但可以设置根属性以控制图形的显示。
(2)图形窗口(figurewindow):独立于根屏幕的显示图形窗口,是根对象的子对象,而所有其他图形对象都是图形窗口的子孙。所有的绘图函数(如plot和surf等)都会自动建立一个图形窗口。
(3)轴(axis):轴对象在图形窗口中定义一个区域,并确定该区域中子对象的方向,轴是图形窗口的子对象,又是图像、灯光、线、块、表面和文字的父对象。
(4)控件(uicontrol):用于接口控制的按钮、列表框、滑条等,可以联合使用构成控制面板和对话框。
(5)菜单(uimenu):下拉菜单,当用户选择一个独立的菜单项时执行回调程序。
x=[-pi:pi/20:pi];
y1=sin(x);
y2=cos(x);
figure(1); % 打开图形窗口
subplot(2,2,1);
plot(x,y1);
grid on; %开启网格线
title('Sin(x)'); % 加上标题
subplot(2,2,2);
plot(x,y2,'r:');
grid on;
title('Cos(x)');
subplot(2,2,3);
plot(x,y1,'-',x,y2,'--'); % 分别使用实线和虚线同时绘制出sin函数和cos函数
grid on;
title('Sin(x) and Cos(x)');
subplot(2,2,4);
plot(x,y1,'-',x,y1,'ko');
grid on;
title('Sin(x)');
t=0:.01:2*pi;
figure(1)
polar(t,sin(2*t).*cos(2*t), '--r')
在MATLAB中最高层次的图形对象是根对象,我们可以通过它对整个计算机屏幕进行控制。当MATLAB启动时,根对象会被自动创建,它一直存在到MATLAB关闭为止。与根对象相关的属性是应用于所用MATLAB窗口的默认属性。在根对象下,有多个图像窗口,或只有图像。每一个图像在用于显示图像数据的计算机屏幕上都有一个独立的窗口,每一个图像都有它独立的属性。与图像相关的属性有颜色、图片底色、纸张大小、纸张排列方向和指针类型等。
axis on:显现坐标轴
二维图形坐标轴范围在默认状态下是根据数据的大小自动设置的,如欲改变,可利用axis(xmin xmax ymin ymax)函数来定义
x=0:0.01:pi/2;
figure(1)
plot(x,tan(x),'-yo') % ymax=tan(1.57) ,而其他数据都很小,结果将使图形难于进行观察和判断
figure(2)
plot(x,tan(x),'-bo')
axis([0, pi/2,0,5]) % 对坐标轴的范围进行控制就可得到满意的绘图结果
uicontrol是user interface control的缩写(用户界面控制)。在各计算机平台上,窗口系统都采用控制框和菜单,让用户进行某些操作,或设置选项或属性。控制框是图形对象,如图标、文本框和滚动条,它和菜单一起使用以建立用户图形界面,称之为窗口系统和计算机窗口管理器MATLAB控制框又称uicontrol,与窗口管理器所用的函数十分相似。它们是图形对象,可以放置在MATLAB的图形窗中的任何位置并用鼠标激活。MATLAB的uicontrol包括按钮、滑标、文本框及弹出式菜单。uicontrol由函数uicontrol生成
和创建菜单对象类似,同样可以通过基于函数命令行的编程方式和基于GUI的方式。
h=uicontrol(hfig,...):在特定的图形窗口创建一个用户界面控制对象。其中,h为待制作的用户界面控制对象的句柄hfig为其父对象句柄,当hfig默认时,系统将在当前图形界面上添加用户界面控制对象。
打开GUI设计工具集窗口,窗口的左侧便是各种类型的控制对象按钮栏。单击要添加的控制对象按钮,在图形窗口中拖动鼠标画出所需要的位置和大小即可。
触发按钮(toggle):当该组件被单击且显示出它们的状态(on或者off)时,控制是否执行回调函数
gco 返回当前鼠标单击的句柄值,该对象可以是除root 对象外的任意图形对象,并且Matlab 会把当前图形对象的句柄值存放在Figure 的CurrentObject属性中。
MATLAB用户菜单对象是用户图形窗口的子对象,所以菜单设计总在某一个图形窗口中进行。MATLAB的图形窗口有自己的菜单栏。为了建立用户自己的菜单系统,可以先将图形窗口的,MenuBar属性设置为none,以取消图形窗口的菜单,然后建立用户自己的菜单。
用户菜单包括一级菜单(菜单条)和二级菜单,有时还可以继续建立子菜单,每一级菜单又包括若干菜单项。要建立用户菜单可用uimenu函数,因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。uimenu函数调用格式如下。
handle=uicontextmenu(parent,‘PropertyName‘,PropertyValue...):用于为快捷菜单设置属性名及属性值。
clf % 用于清除图形的命令
h_menu=uimenu('label','Option'); %产生顶层菜单项Option
h_sub1=uimenu(h_menu,'label','Axis on');%产生Axis on菜单项,由缺省设置而使能
h_sub2=uimenu(h_menu,'label','Axis off',...
'enable','off'); %产生Axis off菜单项,但失能
h_sub3=uimenu(h_menu,'label','Grid on',...
'separator','on','visible','on'); %产生与上分隔的Grid on菜单项,设置可见性,如果可见性是off则不可见
h_sub4=uimenu(h_menu,'label','Grid off',...
'visible','on'); %产生Grid off菜单项,设置可见性,如果可见性是off则不可见
clf % 用于清除图形的命令
h_menu=uimenu('label','Option'); %产生顶层菜单项Option
h_sub1=uimenu(h_menu,'label','Axis on');%产生Axis on菜单项,由缺省设置而使能
h_sub2=uimenu(h_menu,'label','Axis off',...
'enable','off'); %产生Axis off菜单项,但失能
h_sub3=uimenu(h_menu,'label','Grid on',...
'separator','on','visible','on'); %产生与上分隔的Grid on菜单项,设置可见性,如果可见性是off则不可见
h_sub4=uimenu(h_menu,'label','Grid off',...
'visible','on'); %产生Grid off菜单项,设置可见性,如果可见性是off则不可见
set(h_sub1,'callback',[... %选中Axis on菜单项后,产生回调操作
'axis on,',... %画坐标
'set(h_sub1,''enable'',''off''),',...%Axis on菜单项失能
'set(h_sub2,''enable'',''on''),',... %Axis off菜单项使能
'set(h_sub3,''visible'',''on''),',...%Grid on菜单项可见
'set(h_sub4,''visible'',''on''),']); %Grid off菜单项可见
set(h_sub2,'callback',[... %选中Axis off菜单项后,产生回调操作
'axis off,',... %使坐标消失
'set(h_sub1,''enable'',''on''),',... %Axis on菜单项使能
'set(h_sub2,''enable'',''off''),',... %Axis off菜单项失能
'set(h_sub3,''visible'',''off''),',... %Grid on菜单项不可见
'set(h_sub4,''visible'',''off''),']); %Grid off菜单项不可见
set(h_sub3,'callback',[... %选中Grid on菜单项后,产生回调
'grid on,',... %画坐标分格线
'set(h_sub3,''enable'',''off''),',... %Grid on菜单项失能
'set(h_sub4,''enable'',''on''),']); %Grid off菜单项使能
set(h_sub4,'callback',[... %选中Grid off菜单项,产生回调
'grid off,',... %消除坐标分格线
'set(h_sub3,''enable'',''on''),',... %Grid on菜单项使能
'set(h_sub4,''enable'',''off''),']); %Grid off菜单项失能
matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象
原文:https://www.cnblogs.com/cloud-ken/p/11707936.html