1.MATLAB給每種對象的每個屬性規定了一個名字,稱爲屬性名,而屬性名的取值成爲屬性值。例如,LineStyle是曲線對象的一個屬性名,它的值決定着線型,取值能夠是'-' 、':'、'-.'、'--'或'none'。
2.屬性的操做
set函數的調用格式爲:
set(句柄,屬性名1,屬性值1,屬性名2,屬性值2,…)數組
例子:函數
clear
x=0:0.2:12;
y1=bessel(1,x);
y2=bessel(2,x);
y3=bessel(3,x);
h=plot(x,y1,x,y2,x,y3);
set(h,{'LineWidth'},{2;5;8}) %set(h,{'LineWidth'},{2})==set(h,'LineWidth',2),將全部線寬設置爲2
set(h,{'Color'},{'r';'g';'b'},{'LineStyle'},{'--';':';'-.'}) %設置顏色和線寬
axis([0 12 -0.5 1]) %設置座標軸範圍
grid on
X=0:1:12;
Y=-0.5:0.25:1;
set(gca,'xtick',X,'ytick',Y) %設置網格的顯示格式,gca獲取當前figure的句柄
set(xlabel('Time'),'FontSize',12,'Color','r')
y=ylabel('Amplitude');
set(y,'FontSize',12,'Color','g')
legend(h,'First','Second','Third') %添加圖例
title('Bessel Functions') %添加標題
[y,ix]=min(y1); %找到y1的最小值以及改值的下標,賦給y和ix
text(x(ix),y,'First Min \rightarrow','HorizontalAlignment','right') %插入文本學習
具體可改哪些屬性值字體
---------------------------------------------------------------------------------------ui
這兩天在看句柄式圖形方面的東西,如下是我在看書過程當中整理的學習筆記,比較詳細的介紹了句柄以及與其密切相關的各類圖形對象和它們的屬性。但願能對初學Matlab界面設計的朋友們有所幫助。this
GUI學習筆記:spa
句柄式圖形經常使用函數:
(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的對象的屬性名稱下全部可設置的屬性值
set(gcf,'units):獲得[ inches | centimeters | normalized | points | {pixels} | characters ],其中,大括號中是默認值
(4)clf reset;將窗口關閉,並從新設置其屬性爲默認值。
(5)Closerequestfcn,有效值爲字符串或函數句柄(前加@)
當關閉繪圖窗口或離開Matlab時,就會定義Closerequestfcn定義的函數
(6)createfcn,當Matlab創建一個對象時(如爲figure對象,即打開一個繪圖窗口),就會觸發createfcn所定義的callback程序。如set(0,'defaultfigurecreatefcn','set(gcbo,''integerhandle'',''off'')');即設置了根對象的默認值,使每次創建figure對象時,都會指定一個非整數的句柄值。(在用戶未指定句柄值時)
(7)將當前窗口中在鍵盤上按下的按鍵名顯示出來。
set(gcf,'keypressfcn','get(gcf,''currentcharacter'')')
(8)color有效值爲colorspec
colorspec表:
RGB 簡稱
[110] y_yellow
[101] m_magenta
[011] c_cyan
[100] r_red
[010] g_green
[001] b_blue
[111] w_white
[000] k_black
(9)linspace(a,b,c):a初始b結束c線性分段次數linspace(a,b)則默認100次
(10)CurrentObject:有效值爲圖形對象句柄值:返回繪圖窗口內當前被鼠標選取的對象的句柄值
(11)currentPoint:有效值[x-座標,Y-座標]返回繪圖窗口中最後單擊鼠標的位置,用get(gcf,'currentpoint')就會返回當前在窗口中單擊鼠標的位置
(12)DeleteFcn:有效值:字符串或函數句柄,刪除對象(這裏爲figure)時會觸發Deletefcn所定義的Callback程序。
(13)Dockcontrols:有效值爲on/off,默認值on,控制窗口的嵌入效果是否可用。
(14)Hittest:有效值on/off,決定可否用鼠標選取對象爲當前對象。
(15)Integerhandle:有效值on/off,決定Figure對象句柄值的類型爲整數或浮點小數。
(16)Interruptible:有效值on/off,執行過程當中須要中斷程序而優先執行其餘程序時要設該屬性爲on。即Interrupptible屬性是用以控制當Callback執行時是否能被其餘事件(如此時鼠標按下其餘控制對象)而中斷,on是會中斷,off時會執行完當前Callback,再去執行其餘Callback。
(17)Keypressfcn:有效值爲字串或函數句柄。當用戶在figure窗口中按下鍵盤的任意鍵時,就會執行Keypressfcn所定義的Callback程序。
figure('keypressfcn','fprintf(''當前按下鍵盤上的%c鍵\n'',get(gcf,''currentcharacter''))')在這個figure窗口中按下鍵盤上的按鍵時就會當即返回對應的字符,依據這個效果就能夠決定當字符鍵被按下時所要執行的操做。
當這個屬性指定的值是一個函數句柄時,Matlab就會將這個函數視爲一個結構,包含下列字段——character(以當前鍵盤上按下的按鍵顯示的字符來看成結果),modifier(包含一個或多個識別鍵盤上按下按鍵字符名稱的細胞數組(如Ctrl,Alt,Shift等),key(顯示被按下的鍵)。
(18)WindowButtonDownFcn:有效值爲字符串或函數句柄
當鼠標在繪圖窗口內按下鼠標任意鍵時,將觸發WindowButtonDownFcn所定義的Callback以產生相對應的操做。
(19)WindowButtonMotionFcn:有效值爲字符串或函數句柄
當鼠標在繪圖窗口內按住鼠標任意鍵移動,將觸發WindowButtonMotionFcn所定義的Callback以產生相對應的操做。
(20)WindowButtonUpFcn:有效值爲字符串或函數句柄
當鼠標在繪圖窗口內釋放鼠標任意鍵時,將觸發WindowButtonUpFcn所定義的Callback以產生相對應的操做。
(21)CurrentAxes有效值爲當前座標軸的句柄值,返回當前的座標軸句柄值。假設某座標軸句柄值爲a_h,可使用axes(a_h)或set(gcf,'currentaxes',a_h)這兩種方式,制定句柄值爲a_h的座標軸爲當前座標軸。
(22)CurrentCharacter:有效值爲任意字符,返回用戶在繪圖窗口中最後輸入的一個字符,即剛在鍵盤上按下的字符鍵將存儲到Currentcharacter中,通常於Keyppressfcn合用。
(23)Currentobject有效值爲圖形對象的句柄值,返回繪圖窗口內當前被鼠標選取的對象的句柄值。
(24)有效值爲兩元素的向量,[X座標,Y座標]
返回繪圖窗口中最後單擊鼠標的位置,與Windowbuttonmotionfcn,Windowbuttonupfcn合用。使用get(gcf,'currentpoint')就會返回當前在窗口中單擊鼠標的位置。orm
Axes對象的屬性
(1)title('new','color','r');給座標軸命名爲new,紅色
title({'this title','has 2 '});命名爲兩行的標題
(2)Units:有效值爲pixels/normalized/inches/centimeters/points/characters
決定各類位置屬性的度量單位,相對於窗口左下角爲基準。當設置爲Pixels時,以像素爲單位;當設置爲normalized時,以座標爲單位,屏幕的左下角爲[0,0],右上角爲[1.0,1.0]。
(3)grid on:在圖像中顯示網格。
(4)children:控制axes對象的子對象,即image\light\line\patch\rectangle\surface和text等對象,可經過get(gca,'children')來返回當前座標軸的子對象構成的句柄值向量。
(5)字體屬性:
Fontangle字體角度(正常normal或斜體italic/oblique)
Fontname字體名稱
fontsize字體大小(單位由Fontunits決定)
fontunits字體單位(points/normalized/inches/centimeters/pixels)
fontweight字體粗細(normal/bold/light/demi)
gridlinestyle決定座標軸網格線的樣式,‘-’爲實線‘- -’爲虛線‘:’爲點線‘-.’爲點虛線
plot(1:10);grid on;set(gca,'gridlinestyle','-.');將當前座標軸顯示的網格線爲點-虛線
(6)linewidth 定義X,Y和Z軸的軸線寬度(以點單位定義)
(7)NextPlot:有效值爲add|replace|replacechildren,默認爲replace
add表示使用當前的座標軸,把新的圖形對象加到此座標軸中是通常保留的作法,replace表示從新設置座標軸的全部屬性(Position除外),也就是在繪圖前會刪除當前座標軸和它的子對象。replacechildren表示移除當前座標軸中全部子對象,但不從新設置座標軸的全部屬性
(8)Outerposition決定座標軸外邊界的位置。由位置向量[left,bottom,width,height]組成,其中left,bottom表示相對於繪圖窗口左下角的位置,width,height表示區域尺寸,默認爲[0 0 1 1]
(9)Position由位置向量[left,bottom,width,height]組成,決定座標軸位置
(10)Tag定義本座標軸的卷展欄,由於每個對象都有本身惟一的識別碼即tag,以方便findobj函數查找座標軸句柄值。
(11)visible決定座標軸是否可見
(12)set(gca,'xgrid','on')繪製X軸垂直網格線
set(gca,'gridlinestyle',':','linewidth',3)設置網格線線條類型和寬度
set(gca,'box','on')將圖軸方框繪製出來
(13)set(gca,'xscale','linear');將X軸刻度設爲線性
set(gca,'yscale','log');將Y軸刻度設爲對數
(14)disp()顯示一個數組,但不顯示其數組名稱
disp(' Corn Oats Hay')
disp(rand(5,3))
which results in
Corn Oats Hay
0.2113 0.8474 0.2749
0.0820 0.4524 0.8807
0.7599 0.8075 0.6538
0.0087 0.4832 0.4899
0.8096 0.6135 0.7741對象
Pause:pause, by itself, causes M-files to stop and wait for you to press any key before continuing.
實例:plot(1:10);set(gca,'yscale','log');
disp('請按下Enter鍵');
pause
set(gca,'Yscale','linear');本例是說按下Enter鍵將Y軸刻度由對數改成線性。
(16)Xtick,Ytick,Ztick:控制X,Y,Z軸座標刻度記號的位置,即控制座標軸上刻度記號的位置以及每隔多少值會到下一個刻度記號的位置,同時還須要配合Xticklabel、Yticklabel、Zticklabel屬性來調整。詳細見例程。
如下設置方式相同:
set(gca,'Xticklabel',{'1';'10';'100'})
set(gca,'Xticklabel','1|10|100')
set(gca,'Xticklabel',[1;10;100])
set(gca,'Xticklabel',['1 ';'10 ';'100'])
(17)Findobj:查找
Line對象
當用戶創建一個線對象時,就會觸發Createfcn所定義的Callback產生相對應的操做;一樣,若刪除一個線對象時,就會觸發DeleteFcn所定義的Callback產生相對應的操做。如下程序創建一個線對象,並設置DeleteFcn爲一個問題對話框,當刪除該線對象時,就會顯示其問題對話框來詢問用戶。
(1) clipping:有效值爲on/off,默認值爲on
設置座標軸土筐是否能夠剪輯,若是設爲off,則繪製線對象時可超出座標軸的圖框。
(2)Linewidth:有效值爲純量(與向量相對,只有大小而無方向),點爲單位。
(3)Marker:有效值爲字符,決定Line對象的記號類型,有+,o,*,.,x,s,d,等
(4)Markersize:有效值爲純量,單位爲點,Marker的大小。
(5)UIcontextmenu:有效值爲uicontextmenu對象的句柄值,定義與線對象相關聯的uicontextmenu菜單,所以當用戶將該線對象的屬性UicontextMenu設置爲相關聯的uicontextmenu對象的Tag名稱時,uicontextmenu就能夠在該線對象上單擊鼠標右鍵來顯示uicontextmenu菜單。
(6)Tag:有效值爲字符串,定義改線對象的卷展欄(即標記)
(7)Type:有效值爲字符串(只讀),此處爲’line‘字符串。
(8)Xdata,Ydata,Zdata:有效值爲座標數組,指定產生線條的數據點,若爲2D環境則Xdata、Ydata須要有相同數目的數據,而Zdata爲空矩陣;3D環境則Xdata,Ydata,Zdata三者都須要有相同數目的數據。
例:x=0:5,y=x+10;line('xdata',x,'ydata',y);
Patch對象
patch函數不想其餘高級區域創建函數(fill和area),只是簡單地將patch對象添加到當前座標軸中而已。
使用:patch(X,Y,C)
在當前的座標軸中添加二維填充的patch對象,X和Y用以定義patch對象頂點的位置,若X,Y爲矩陣,則Matlab按每一行的元素來產生多個多邊形。
例:x = [0 0;0 1;1 1];
y = [1 1;2 2;2 1];
z = [1 1;1 1;1 1];(x(1,1),y(1,1),z(1,1)爲第一個面的第一個頂點,x(2,1),y(2,1),z(2,1)爲第一個面的第二個頂點,以此類推)
tcolor(1,1,1:3) = [1 1 1];
tcolor(1,2,1:3) = [.7 .7 .7];
patch(x,y,z,tcolor);(tcolor是一個1*2*3的三維矩陣)
Surface對象
surface能夠創建一個surface對象,surface是由矩陣數據所在的列索引值爲X座標,而行索引值爲Y座標,而且矩陣的每一個元素值爲Z座標。
image對象
image(C)將矩陣C看成一個圖像來顯示,C的每個元素定義一個圖像中矩陣線段的顏色。
image(x,y,C)其中x與y爲2元素的向量,分別指定X軸與Y軸卷展軸的範圍。C爲圖像矩陣。
text對象
(1)text(x座標,y座標,'string')在圖形中指定位置(x,y)顯示字符串string。
(2)Editing有效值爲on/off,off時,用戶在執行GUI操做時沒法直接在該Text對象上進行編輯,改成on後,能夠進行編輯。
(3)HorizontalAlign 有效值爲left/center/right決定Text對象中字符水平方向的對齊方式。
(4)Interpreter有效值爲tex/none,決定Text對象中是否可用Tex字符註釋,當設置爲Tex時,表示容許用戶可以在String屬性下輸入Tex字符。如下爲在窗口的 [.5 .5]點位置處創建一個text對象而且字體大小以16點來表示的一個方程式。(顯示的是一個二重積分)
text('interpreter','latex','string','$$\int_0^x\!\int_y dF(u,v)$$','position',[.5 .5],'fontsize',16)
(5)String有效值爲字符串,表示要顯示出來的字符串是什麼。
(6)verticalAlignme 有效值爲top/cap/middle/baseline/bottom決定Text對象垂直對齊的方式。
下面加載一個例子,是ilovematlab論壇一個斑竹的回覆
x=0:0.5:10;
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,'r',x,y2,'g')
>> findobj(gca,'color','r')
不想要的曲線直接delete句柄就能夠了
---------------------------------------------------------------------------------------
gcf 是返回當前被激活的窗口的圖形對象的句柄。你能夠認爲它就指代當前窗口。
figure(gcf)打開這個窗口。
gca返回當前axes對象的句柄值
gco返回當前鼠標單擊的句柄值,該對象能夠是除root對象外的任意圖形對象,而且Matlab會把當前圖形對象的句柄值存放在Figure的CurrentObject屬性中
Figure對象的屬性篇