matlab學習筆記9 高級繪圖命令_1 圖形對象_根對象,軸對象,用戶控制對象,用戶菜單對象

一塊兒來學matlab-matlab學習筆記9

高級繪圖命令_1 圖形對象_根對象,軸對象,用戶控制對象,用戶菜單對象

以爲有用的話,歡迎一塊兒討論相互學習~Follow Me

參考書籍
《matlab 程序設計與綜合應用》張德豐等著 感謝張老師的書籍,讓我領略到matlab的便捷
《MATLAB技術大全》葛超等編著 感謝葛老師的書籍,讓我領略到matlab的高效git

圖形對象

  • 圖形對象(figure object):能夠肯定圖形的總體或部分屬性的各層界面。各層次圖形對象是相互關聯的,低層次的對象必須創建在它所在層次之上各層對象完備的基礎上。
  • 每個圖形都是由不一樣圖形對象組成的。圖形對象是MATLAB提供給用戶的一種用於建立計算機圖形的面向對象的圖形系統,該系統提供給用戶建立線、字、網格、面及圖形用戶界面(GUI)的多種3繪圖指令。前面所介紹的各類「高級"指令都是以圖形對象爲基礎生成的,因此圖形對象也稱爲低層圖形。低層指令的調用沒有高層指今那樣簡明清晰、通俗易懂,可是低層指令能夠直接對圖形的基本要素進行操做的特色決定了使用者可讓繪製的圖形更加個性化、更加具備表現力。圖形對象是圖形系統中最基本、最底層的單元,每一個圖形對象均可以被獨立地操做。
  • 圖形對象的類型(typeoffigureobject)以下。
    (1)根屏幕(rootscreen):在層次的最頂層是根對象,至關於計算機屏幕,根對象只有一個,根對象不能被創建,但能夠設置根屬性以控制圖形的顯示。
    (2)圖形窗口(figurewindow):獨立於根屏幕的顯示圖形窗口,是根對象的子對象,而全部其餘圖形對象都是圖形窗口的子孫。全部的繪圖函數(如plot和surf等)都會自動創建一個圖形窗口。
    (3)軸(axis):軸對象在圖形窗口中定義一個區域,並肯定該區域中子對象的方向,軸是圖形窗口的子對象,又是圖像、燈光、線、塊、表面和文字的父對象。
    (4)控件(uicontrol):用於接口控制的按鈕、列表框、滑條等,能夠聯合使用構成控制面板和對話框。
    (5)菜單(uimenu):下拉菜單,當用戶選擇一個獨立的菜單項時執行回調程序。github

    通用函數

    在這裏插入圖片描述
  • 使用不一樣樣式繪製出[-pi,pi]之間的正弦和餘弦曲線
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)');

在這裏插入圖片描述


在這裏插入圖片描述
在這裏插入圖片描述


通用函數

  • 在極座標系中繪製極座標曲線
    • polar(theta,rho)
    • polar(theta,rho,LineSpec)
    • polar函數可在極座標系中繪製出曲線,並可加上極座標柵格線,其中theta表示極座標角度,rho表示半徑,LineSpec可指定曲線的線型、顏色和標記。
    t=0:.01:2*pi;
    figure(1)
    polar(t,sin(2*t).*cos(2*t), '--r')
    在這裏插入圖片描述

根對象

  • 圖形對象的基本要素以根屏幕爲先導。圖形對象的根(root)對應於計算機整個屏幕,根只有一個,其餘全部圖形對象都是根的後代。當MATLAB啓動時,根對象便自動生成。根對象的屬性即是其餘全部MATLAB窗口的默認設置。
  • 在MATLAB中最高層次的圖形對象是根對象,咱們能夠經過它對整個計算機屏幕進行控制。當MATLAB啓動時,根對象會被自動建立,它一直存在到MATLAB關閉爲止。與根對象相關的屬性是應用於所用MATLAB窗口的默認屬性。在根對象下,有多個圖像窗口,或只有圖像。每個圖像在用於顯示圖像數據的計算機屏幕上都有一個獨立的窗口,每個圖像都有它獨立的屬性。與圖像相關的屬性有顏色、圖片底色、紙張大小、紙張排列方向和指針類型等。編程

    軸對象

  • 軸對象是圖形窗口對象的子對象,座標軸對象是圖窗中實際繪圖的區域。一個圖形窗中能夠有多個軸。每個軸又包含線、面、方、塊、字、像、光等圖形對象,在句柄圖形對象的結構中,它是十分重要的一環。軸對象的屬性衆多,主要功能爲控制圖像各方面信息的顯示。控制座標性質的axis函數的多種調用格式
  • axis(xmmxmaxyminymax):指定二維圖形x和y軸的刻度範圍,
  • axis auto:設置座標軸爲自動刻度(默認值)。
  • axis manual(或axis(axis)):保持刻度不隨數據的大小而變化
  • axis tight:以數據的大小爲座標軸的範圍。
  • axis ij:設置座標軸的原點在左上角,i爲縱座標,丿爲橫座標。
  • axis xy:使座標軸回到直角座標系
  • axise qual:使座標軸刻度增量相同
  • axis square:使各座標軸長度相同,但刻度增量未必相同
  • axis normal:自動調節軸與數據的外表比例,使其餘設置失效。
  • axis off:使座標軸消隱。
  • 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生成ide

    控制對象的建立

    和建立菜單對象相似,一樣能夠經過基於函數命令行的編程方式和基於GUI的方式。函數

    基於函數命令行的編程方式

    使用控制對象函數uicontrol是建立控制對象的基本方法,函數的調用格式以下:
  • h=uicontrol('PropertyName1',value1,'PropertyName2',value2,...):在當前圖形窗口建立一個用戶控制對象,並返回一個句柄值
  • h=uicontrol(hfig,...):在特定的圖形窗口建立一個用戶界面控制對象。其中,h爲待制做的用戶界面控制對象的句柄hfig爲其父對象句柄,當hfig默認時,系統將在當前圖形界面上添加用戶界面控制對象。工具

    基於GUI的方式

  • 打開GUI設計工具集窗口,窗口的左側即是各類類型的控制對象按鈕欄。單擊要添加的控制對象按鈕,在圖形窗口中拖動鼠標畫出所須要的位置和大小便可。學習

    控制對象的屬性

    MATLAB提供了11種控制對象,每一種控制對象對應於不一樣的特定目的。下面介紹這些控制對象的特徵和實現的功能
  • 座標軸(Axis):設置座標軸控制對象。
  • 框架(Frame):該組件爲一封閉的、可見的、圖形窗口區域。框架能使一個用戶圖形界面中相關的控制組件能容易理解。框架沒有相關的回調程序。只有控制組件能在框架中顯示。框架不是透明的,所以用戶定義的組件前後順序決定了組件是否被框架遮住或可見。屬性Stacking order決定了控制組件的顯示順序:第一個定義的組件最早顯示,後面定義的控制組件則覆蓋已經存在的組件。若用戶要用一個框架包圍一些組件,則必須第一個定義框架。
  • 校驗框(check):當單擊檢驗框時,會執行一操做。該組件對於提供用戶多個獨立的選擇是頗有用的。要激活一校驗框,只需用鼠標單擊該組件便可,且選中的狀態在組件上顯示出來。
  • 可編輯文本框(edit):容許用戶輸人與修改文本文字的區域。當用戶想把文字做爲輸人時,可以使用該組件。若一可編輯文本框有焦點,則單擊文本框的菜單欄不會執行任何操做。所以,在單擊菜單條後,語句get(edit-handle,'Strmg')並無返回當前編輯框中的內容。由於系統必須執行回調函數來改變屬性strmg的值,即便屏幕上顯示的文字已經改變。
  • 列表框(list):顯示一些項目的列表(用命令string設置),且容許用戶選擇一個或多個項目。屬性Min與Max控制選擇的模式。屬性value顯示可選擇的項目與包含着字符串列表中項目的索引;對於選擇了多個項目則用向量表示。在任何的能改變屬性value值的、鼠標鬆開的操做以後,系統MATLAB將立刻執行列表框的回調函數。所以,用戶有必要增長一個Done按鈕,用於推遲當要屢次選擇項目時的操做。在執行列表框回調函數Callback屬性以前,列表框中項目的選擇有單擊或雙擊之分,對應於將圖形窗口屬性SelectionType設置爲normal或openo
  • 彈出菜單(popup):當組件被按下時,打開且顯示一選擇列表(用命令strmg設置)。當沒有打開時,該組件顯示當前的選擇項。
  • 普通按鈕(push):當該組件被按下時,將執行一操做。要激活一個按鈕,只需在按鈕上按下鼠標按鈕便可。
  • 單選按鈕(rad10):該組件與校驗框相相似,但它包含幾個互斥的並且相關的選項(例如在任意時刻,只能選擇一個狀態)。要激活某一單選按鈕,只需在該組件上按下鼠標便可。被選中的組件同時顯示出來
  • 滑塊(slide):該組件容許用戶經過移動某一範圍以內的滑塊來輸人一指定的數值。用戶要移動一滑塊,只需在滑塊上按下鼠標不放,且在滑塊方向上移動;或者是在滑槽內單擊鼠標;或者是單擊滑塊條上的箭頭。當鬆開鼠標後,滑塊所在位置將與一數值對應。用戶能夠設置滑塊的最大值、最小值與當前值等。
  • 靜態文本框(text):顯示文本行。靜態文本常常做爲其餘控制對象標籤,以提供其餘用戶相關信息,或者是顯示一滑塊的數值。其餘用戶不能交互地改變靜態文本,所以對於靜態文本,沒有相關的回調函數。
  • 觸發按鈕(toggle):當該組件被單擊且顯示出它們的狀態(on或者off)時,控制是否執行回調函數ui

  • gcf 返回當前Figure 對象的句柄值
  • gca 返回當前axes 對象的句柄值
  • gco 返回當前鼠標單擊的句柄值,該對象能夠是除root 對象外的任意圖形對象,而且Matlab 會把當前圖形對象的句柄值存放在Figure 的CurrentObject屬性中。命令行

用戶菜單對象

MATLAB用戶菜單對象是用戶圖形窗口的子對象,因此菜單設計總在某一個圖形窗口中進行。MATLAB的圖形窗口有本身的菜單欄。爲了創建用戶本身的菜單系統,能夠先將圖形窗口的,MenuBar屬性設置爲none,以取消圖形窗口的菜單,而後創建用戶本身的菜單。

創建用戶菜單

用戶菜單包括一級菜單(菜單條)和二級菜單,有時還能夠繼續創建子菜單,每一級菜單又包括若干菜單項。要創建用戶菜單可用uimenu函數,因其調用方法不一樣,該函數能夠用於創建一級菜單項和子菜單項。uimenu函數調用格式以下。

  • handle=uimenu('PropertyName',PropertyValue...):在MATLAB的當前活動窗口創建菜單對象;若是不存在當前活動窗口,MATLAB將自動打開一個圖形窗口,並將該窗口做爲其菜單對象
  • handle=uimenu(parent,'PropertyName',PropertyValue•••):在指定的窗口中創建菜單對象
  • 這兩種調用格式的區別在於:創建一級菜單項時,要給出圖形窗口的句柄值。若是省略了這個句柄值,MATLAB就在當前圖形窗口中創建這個菜單項。若是此時不存在活動圖形窗口,MATLAB會自動打開一個圖形窗口,並將該菜單項做爲它的菜單對象。在創建子菜單項時,必須指定一級菜單項對應的句柄值。快捷菜單是用鼠標右鍵單擊對象時在屏幕上彈出的菜單。快捷菜單的位置是不固定的,並且老是附加在某個圖形對象上。在MATLAB中用uicontextmenu函數建立快捷菜單,其調用格式以下:
  • handle=uicontextmenu(parent,'PropertyName',PropertyValue...):用於爲快捷菜單設置屬性名及屬性值。

    菜單對象經常使用屬性

  • 菜單屬性是菜單編程中值得注意的一個重要方面。在MATLAB中,能夠經過get函數獲取菜單屬性的屬性值,經過set函數設置菜單屬性的屬性值。
    • 菜單對象具備Children、Parent、Tag、Type、UserData、Visible等公共屬性,除公共屬性外,還有一些經常使用的特殊屬性。
    • Accelerator屬性(定義快捷鍵):該屬性用於定義菜單項的快捷鍵。其取值能夠是任意字母,如取字母a,則表示定義快捷鍵Ctrl+A。
    • Label屬性:是在菜單項上顯示的標註文本。能夠在相應字符的前加上符號「&」爲Label定義快捷鍵,以便使用組合鍵「Alt+字符」來打開相應的菜單項。
    • Callback屬性:用來設置菜單項的回調程序,其內容能夠是MATLAB的函數、命令和可執行的表達式,也可調用本身編寫的函數。
    • Checked屬性:用於設置是否在菜單項前添加選中標記,設爲on表示添加,off表示不添加。
    • Enable屬性:該屬性用於設置菜單項是否有效。當屬性值設置爲off時,菜單項的標籤爲灰色,不可選;當屬性設置爲on時,菜單項可選。
    • Tag屬性:該屬性用於標識菜單項名稱。
    • Position屬性:該屬性用於定義一級菜單項在菜單條上的相對位置或子菜單項在菜單組內的相對位置。其取值爲數值,默認值爲9。
    • BeingDeleted屬性:該屬性用於刪除菜單項。當取值爲on時,可刪除菜單中的任意一項;當取值爲off時,則不進行刪除操做。
    • Clipping屬性:該屬性用於將菜單項進行剪裁
    • CreateFcn屬性:該屬性用於定義一個菜單對象建立階段執行的回調程序,取值爲一個字符串或函數句柄。
    • Separator屬性:用於設置是否在菜單項前添加分隔線,設爲on表示添加,off表示不添加。
    • Type屬性:該屬性用於標識圖形對象的類,屬性值爲字符串。
    • BusyAction屬性:該屬性決定回調程序的中斷方式,取值爲cancel和Queueo若是回調程序正在執行,而用戶在已經定義了回調程序的對象上觸發了一個事件,新事件的回調程序將依據BusyAction的值來決定是否中斷正在執行的回調程序。
    • HitTest屬性:該屬性決定是否將鼠標選取對象做爲當前對象。當設置爲on時,表示可以將鼠標選取對象做爲當前對象;當設置爲offü寸,CurrentObJec矚性將返回空矩陣
    • UserData屬性:該屬性用於保存與菜單對象有關的信息或數據,屬性值爲矩陣,其默認值爲[]。

製做一個帶4個子菜單項的頂層菜單項,該下拉菜單分爲兩個功能區,每一個功能區的兩個菜單項是相互獨立的,所以採用使能屬性進行處理;當圖形窗座標軸消隱時,整個座標分隔控制功能區不可見。

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菜單項失能

在這裏插入圖片描述

相關文章
相關標籤/搜索