MATLAB圖形控制代碼
1 圖形物件及其控制代碼
繪圖函式將不同的曲線或曲面繪製在圖形視窗中,而圖形視窗由不同的物件(如座標軸、曲線、曲面或文字等)組成的圖形介面。Matlab給每個圖形物件分配一個識別符號,稱為控制代碼。以後可以通過該控制代碼對該圖形物件的屬性進行設定,也可以獲取有關的屬性值,從而能夠更加自主地繪製各種圖形。1.1 圖形物件
Matlab的圖形物件包括計算機螢幕、圖形視窗、座標軸、使用者選單、使用者控制元件、曲線、曲面、文字、影象、光源、區域塊和方框等。系統將每一個物件按樹型結構組織起來。每個具體圖形不必包含每個物件,但每個圖形必須具備根螢幕和圖形視窗。Matlab控制代碼結構下圖所示:
1.2 圖形物件控制代碼
Matlab在建立每一個圖形物件時,都為該物件分配唯一的一個值,稱其為圖形物件控制代碼(Handle)。控制代碼是圖形物件的唯一識別符號,不同物件的控制代碼不可能重複和混淆。計算機螢幕作為根物件由系統自動建立,其控制代碼值為0,而圖形視窗物件的控制代碼值為一正整數,並顯示在該視窗的標題欄,其他圖形物件的控制代碼為浮點數。
Matlab提供了若干個函式用於獲取已有圖形物件的控制代碼,如:figure,line,text,surface, axes(xlabel,ylabel,zlabel,title)
常用圖形物件的控制代碼函式:
gcf 獲取當前圖形視窗的控制代碼
gca 獲取當前座標軸的控制代碼
2 圖形物件屬性
屬性名與屬性值:Matlab給每種物件的每一個屬性規定了一個名字,稱為屬性名,而屬性名的取值稱為屬性值。
屬性的操作:
set函式:set(控制代碼,屬性名1,屬性值1,屬性名2,屬性值2,…)
其中控制代碼用於指明要操作的圖形物件。如果在呼叫set函式時省略全部屬性名和屬性值,則將顯示出控制代碼所有的允許屬性。
獲取控制代碼的屬性值:get函式:get(控制代碼,屬性名)
如果在呼叫get函式時省略屬性名,則將返回控制代碼的所有屬性值。
3 圖形物件的建立
3.1 圖形視窗物件
建立圖形視窗物件使用figure函式,其呼叫格式為:
控制代碼變數=figure(屬性名1,屬性值1,屬性名2,屬性值2,…)
Matlab通過對屬性的操作來改變圖形視窗的形式。也可以使用figure函式按Matlab預設的屬性值建立圖形視窗:figure 或 控制代碼變數=figure。
要關閉圖形視窗,使用close函式,其呼叫格式為:close(視窗控制代碼),另外,closeall 命令可以關閉所有的圖形視窗,clf命令則是清除當前圖形視窗的內容,但不關閉視窗。
MATLAB為每個圖形視窗提供了很多屬性。這些屬性及其取值控制著圖形視窗物件。常用屬性如下:
MenuBar屬性:該屬性的取值可以是figure(預設值)或none,用來控制圖形視窗是否應該具有選單條。如果它的屬性為none,則表示該圖形視窗沒有選單條。這是使用者可以採用uimenu函式來加入自己的選單條。如果屬性值為figure,則該視窗將保持圖形視窗預設的選單條。這時也可以採用uimenu函式在原預設的圖形視窗選單後面新增新的選單項。
Name屬性:該屬性的取值為字串,為圖形的標題,它的預設值為空。標題形式為:figure 1:標題。
MumberTitle 屬性:取值為on(預設值)或off。決定圖形視窗中是否以Figure n為標題的字首。Resize屬性:取值為on(預設值)或off。決定著在圖形視窗建立後可否用滑鼠改變該視窗的大小。
Position屬性:該屬性的取值由4個元素構成[a b c d]。決定圖形的位置與大小。其中a,b分別為視窗左下角的橫縱座標值;c,d分別為視窗的寬度和高度。它們的單位由units屬性決定。
Units屬性:該屬性的取值為下列字串的一種:piexl(畫素,為預設值)、normalized(相對單位)、inches(英寸)、centimeters(釐米)、points(磅)。
KeyPressFcn(鍵盤鍵按下響應)、WindowButtonDownFcn(滑鼠鍵按下響應)、WindowButtonMotionFcn(滑鼠移動響應)及WindowButtonUpFcn(滑鼠鍵釋放響應)等。
建立使用者選單
要建立使用者選單可用uimenu(user interfaces menu)函式,因其呼叫方法不同,該函式可以用於建立一級選單項和子選單項。建立一級選單項的函式呼叫格式為:一級選單項控制代碼=uimenu(圖形視窗控制代碼,屬性名1,屬性值1,屬性名2,屬性值2,…)。建立子選單項的函式呼叫格式為:子選單項控制代碼=uimenu(一級選單項控制代碼,屬性名1,屬性值1,屬性名2,屬性值2,…)。
快捷選單
快捷選單是用滑鼠右鍵單擊某物件時在螢幕上彈出的選單。這種選單出現的位置是不固定的,而且總是和某個圖形物件相聯絡。在MATLAB中,可以使用uicontextmenu函式和圖形物件的UIContextMenu屬性來建立快捷選單,具體步驟為:
(1) 利用uicontextmenu函式建立快捷選單。
(2) 利用uimenu函式為快捷選單建立選單項。
(3) 利用set函式將該快捷選單和某圖形物件聯絡起來。
3.2 座標軸物件
建立座標軸物件使用axes函式,其呼叫格式為:
控制代碼變數=axes(屬性名1,屬性值1,屬性名2,屬性值2,…)
Axes常用屬性:
一個例子:利用座標軸物件實現圖形視窗的任意分割。Box屬性:該屬性的取值為on或off(預設值),它決定座標軸是否帶有邊框。
GridLineStyle屬性:該屬性的取值可以是‘:’(預設值)、‘-.’、‘--’、或‘none’。該屬性定義網格線的線型。
Position屬性:該屬性的取值由4個元素構成[ab c d]。這個向量在圖形視窗中決定一個矩形區域,座標軸位於其中。該矩形區域的左下角相對於圖形視窗左下角的座標為(a,b),矩形的高度和寬度為c和d。它們的單位由units屬性決定。
Units屬性:該屬性的取值為下列字串的一種:normalized(相對單位,為預設值)、inches(英寸)、centimeters(釐米)、points(磅)。
Title屬性:該屬性的取值是座標軸標題文字物件控制代碼。可以通過該屬性對座標軸標題文字物件進行操作。如:
h=get(gca,‘Title’); %獲得標題文字物件控制代碼
set(h,‘color’,‘r’);%設定標題文字顏色
xlabel、ylabel、zlabel、屬性:3種屬性的取值分別是x,y,z軸的說明文字控制代碼。其操作與title控制代碼相同。如:
h=get(gca,‘xlabel’);
set(h, ‘string’, ‘value of x axis’);
Xlim、YLim、ZLim屬性:3種屬性的取值都是具有兩個元素的數值向量。3中屬性分別定義各座標軸的上下限,預設值為[0,1]。以前介紹的axis函式實際上是對這些屬性的直接賦值。
XScale、YScale、ZScale屬性:3種屬性的取值都是‘Linear’(預設值)或‘log’,這些屬性定義各座標軸的刻度型別。
View屬性:該屬性的取值是兩個元素的數值向量,定義視點方向。
axes函式可以在不影響圖形視窗上其他座標軸的前提下建立一個新的座標軸,從而實現圖形視窗的任意分割。
clf
x=0:pi/10:2*pi
y=sin(x);
axes('position',[0.2,0.2,0.2,0.7]);
plot(y,x);
grid on
set(gca,'gridlinestyle','--');
axes('position',[0.4,0.2,0.5,0.5]);
t=0:pi/100:20*pi
x=sin(t);
y=cos(t);
z=t.*sin(t).*cos(t);
plot3(x,y,z)
axes('position',[0.55,0.6,0.25,0.3]);
[X,Y]=meshgrid(-8:0.5:8)
Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2+eps);
mesh(X,Y,Z)
3.3 曲線物件
建立曲線物件使用line函式,其呼叫格式為:
控制代碼變數=line(x,y,z,屬性名1,屬性值1,屬性名2,屬性值2,…), 其中對x,y,z的解釋與高層曲線函式plot和plot3等一樣。
每個曲線物件也具有很多屬性。除公共屬性外,其他常用屬性如下:
Color屬性:該屬性的取值是代表某顏色的字元或RGB值。定義曲線的顏色。
Linestyle屬性:定義線型。
Linewidth屬性:定義線寬,預設值為0.5磅。
Marker屬性:定義資料點標記符號,預設值為none。
Markersize屬性:定義資料點符號的大小,預設值為6磅。
Xdata、Ydata、zdata屬性:3種屬性的取值都是數值向量或矩陣,分別代表曲線物件的3個座標軸資料。
3.4 文字物件
使用text函式可以根據指定位置和屬性新增文字說明,並儲存控制代碼。該函式呼叫格式為:
控制代碼變數=text(x,y,z,’說明文字’,屬性名1,屬性值1…)
其中x,y,z為位置座標。說明文字中除使用標準的ASCII字元外,還可使用LaTeX格式的控制字元。h=text(0.5,0.5,’{\gamma}={\rho)^2’)
文字物件的常用屬性如下:
Color屬性、string屬性、Fontsize屬性、Rotation屬性
color屬性:文字物件顏色。
String屬性:文字標註的內容。
Fontsize屬性:定義文字的大小,預設值為10磅。
Rotation屬性:該屬性的取值是數值量,預設值為0。它定義文字物件的旋轉角度,取正值表示逆時針方向旋轉,取負值表示順時針方向旋轉。
3.5 曲面物件
建立曲面物件使用surface函式,其呼叫格式為:
控制代碼變數=surface(x,y,z,屬性名1,屬性值1,屬性名2,屬性值2,…),其中對x,y,z的解釋與高層曲面函式mesh和surf等一樣,其餘的解釋與前面介紹過的figure和axes等函式類似。
常用屬性如下:
Edgecolor屬性:該屬性的取值是代表某顏色的字元或RGB值,還可以是flat、interp或none,預設為黑色。定義曲面網格線的顏色或著色方式。其中Flat用相應頂點的顏色單色顯示邊界,interp用兩端頂點的顏色的插值過度顏色顯示邊界:
Facecolor屬性:該屬性的取值是代表某顏色的字元或RGB值,定義曲面網格片的顏色或著色方式。還可以是flat、interp或none。其中 Flat用相應頂點的顏色單色顯示,interp用兩端頂點的顏色的插值過度顏色顯示。
Linestyle屬性:定義曲線網格線的線型。
Linewidth屬性:定義網格線的線寬,預設值為0.5磅。
Marker屬性:定義曲面資料點標記符號,預設值為none。
Markersize屬性:定義標記符號的大小,預設值為6磅。
Xdata、ydata、zdata屬性:3種屬性的取值都是數值向量或矩陣,分別代表曲面物件的3個座標軸資料。
參考: