《matlab程序設計》第八章和九章matlab句柄繪圖
《《matlab程序設計》第八章和九章matlab句柄繪圖》由會員分享,可在線閱讀,更多相關《《matlab程序設計》第八章和九章matlab句柄繪圖(60頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、matlab語言的句柄繪圖可以對圖形各基本對象進行更為細膩的修飾,可以產(chǎn)生更為復雜的圖形,而且為動態(tài)圖形的制作奠定了基礎。高層繪圖函數(shù)是對整個圖形進行操作的,圖形每一部分的屬性都是按缺省方式設置的,充分體現(xiàn)了matlab語言的實用性。底層繪圖函數(shù)可以定制圖形,對圖形的每一部分進行控制,用戶可以用來開發(fā)用戶界面以及各專業(yè)的專用圖形。充分體現(xiàn)了matlab語言的開發(fā)性例:t=0:pi/100:2*pi;y=sin(t);plot(t,y)%自動出現(xiàn)一個窗口 句柄圖形:利用底層繪圖函數(shù),通過對對象屬性的設置(Handle Graphics)與操作實現(xiàn)繪圖。句柄圖形中所有圖形操作都是針對圖形對象而言的
2、。句柄圖形充分體現(xiàn)了面向對象的程序設計。句柄圖形的功能v 句柄圖形可以隨意改變matlab生成圖形的方式。v 句柄圖形允許用戶定制圖形的許多特性,無論是對圖形做一點小改動,還是影響所有圖形輸出的整體改動。v 句柄圖形的特性高層繪圖函數(shù)是無法實現(xiàn)的圖形對象 圖形系統(tǒng)中最基本、最底層的單元 每個圖形元素(比如其坐標軸或圖形上的曲線、文字等)都是一個獨立的對象。用戶可以對任何一個圖形元素進行單獨地修改,而不影響圖形的其他部分,具有這樣特點的圖形稱為向量化的繪圖。父對象 子對象說明:根:圖形對象的根,對應于計算機屏幕,根只有一個,其它所有圖形對象都是根的子對象。圖形窗口:根的子對象,窗口的數(shù)目不限,所
3、有圖形窗口都是根屏幕的子對象,除根之外,其它對象則是窗的子對象??丶?圖形窗口的子對象,創(chuàng)建用戶界面控件,使得用戶可采用鼠標在圖形上作功能選擇,并返回句柄。菜單:圖形窗口的子對象,創(chuàng)建用戶界面菜單對象右鍵菜單:圖形窗口的子對象,創(chuàng)建用戶界面右鍵菜單對象 軸:圖形窗口的子對象,創(chuàng)建軸對象,并返回句柄,線面字塊像的父輩線:軸的子對象,創(chuàng)建線對象。Plot、plot3、contour、contour3命令可以產(chǎn)生線對象面:軸的子對象,創(chuàng)建塊對象。Polar、mesh、surf命令可以產(chǎn)生面對象。字:軸的子對象,創(chuàng)建字對象。位置取決于軸所建立的坐標系塊:軸的子對象,創(chuàng)建塊對象。Fill、fill3可以
4、建立塊對象像:軸的子對象,創(chuàng)建圖像對象。圖像對象可由函數(shù)image創(chuàng)建引例:x=0:2*pi/180:2*pi;y1=sin(2*x);y2=cos(2*x);plot(x,y1,x,y2)01234567-1-0.8-0.6-0.4-0.200.20.40.60.81窗口對象線對象軸對象0102001020-10010-505-1-0.500.51x=-pitppicos(x)valueofthecosinecos(x)=0.7071002003000501001502000-1-0.500.51面對象軸對象像對象塊對象線對象文字對象在高層繪圖中對圖形對象的描述一般是缺省的或由高層繪圖函數(shù)自
5、動設置的,因此對用戶來說幾乎是不透明的。但句柄繪圖中上述圖形對象都是用戶需要經(jīng)常使用的,所以要作到心中有數(shù),用句柄設置圖形對象的屬性。figure創(chuàng)建圖形窗口調(diào)用格式:h=figure(n)n為窗口序號 uicontrol創(chuàng)建控件調(diào)用格式:h=uicontrol(property,value)property/value確定控件類型 uimenu創(chuàng)建用戶界面菜單調(diào)用格式:h=uimenu(property,value)property/value 確定菜單形式。axes 創(chuàng)建軸對象 h=axes(property,)定義軸對象的位置與大小 left,bottom width,height li
6、ne 創(chuàng)建線對象 h=line(x,y,z)patch 創(chuàng)建塊對象 h=patch(x,y,z,c)x,y,z定義多邊形,c確定填充顏色。surface 創(chuàng)建面對象 h=surface(x,y,z,c)x,y,z三維曲面坐標,c顏色矩陣。二維畫線 三維畫線 image 顯示圖象 h=image(x);x為圖像矩陣 text 標注文字 h=text(x,y,string)每個底層函數(shù)只能創(chuàng)建一個圖形對象,并將它們置于適當?shù)母篙厡ο笾小4_定標注位置標注字符串 圖形對象是由屬性來描述的例如:figure 大小位置 1 1 640 480 顏色 0 0 0 省缺 line a.x,y 數(shù)據(jù);b.線的顏
7、色 c.線型;d.線寬h1=figure(1)set(h1,unit,centimeters,position,100200300500,color,r)%指points.set(h1,unit,normalized,position,0.2,0.2,0.64,0.32)%歸一化例1:注:注:unit單位的取值為:inches,centimeters,normalized,points,pixels和characters。x=1:10,y=1:10;h2=plot(x,y);set(h2,linewidth,2,color,r);set(h2,linestyle,-.)例2:什么是句柄?句柄是
8、圖形對象的標識代碼,標識代碼含有圖形對象的各種必要的屬性信息。什么是句柄操作?向量化的繪圖要求給每個圖形元素分配一個句柄(handle),以后再對該圖形元素做進一步操作時,則只需對該句柄進行操作即可。各圖形對象的句柄的數(shù)據(jù)格式:根屏幕0圖形窗口整數(shù),表示圖形窗口數(shù)其它對象對應的浮點數(shù) 所有能創(chuàng)建圖形對象的matlab函數(shù)都可給出所創(chuàng)建圖形對象的句柄例:創(chuàng)建1號窗口,返回句柄h=figure(1)h=1返回值為窗口號數(shù)例:h=line(1:6,1:6)創(chuàng)建線對象的同時也建立了一個唯一的句柄變量h是句柄值浮點數(shù) 句柄屬性的設置與修改get:獲得句柄圖形對象的屬性和返回某些對象的句柄值set:改變圖
9、形對象的屬性 專用函數(shù):gcf:當前窗口對象的句柄GetCurrentFiguregca:當前軸對象的句柄GetCurrentAxesgco:返回當前鼠標所單擊的圖形對象的句柄值GetCurrentObject。若一個對象的句柄已知,可以獲取其“父”或“子”的句柄:h=gcaf=get(h,parent);l=get(h,children);操作格式:h=gcf 將當前窗口對象的句柄賦值給變量hget(h)或get(gcf)查閱當前窗口對象的屬性delete(gcf)刪除當前窗口的屬性例:h=line(x,y)get(h)1.get(gca,children)軸的子代Haveabreak!例:
10、創(chuàng)建一個線對象并返回線對象的句柄值 h1=line(0:10,0:10)h1=h1為句柄的代碼值012345678910012345678910 查閱線對象的屬性名稱和屬性值get(h1)Color=110EraseMode=normalLineStyle=-LineWidth=0.5MarkerSize=6Xdata=(1by11)Ydata=(1by11)Zdata=Children=Parent=56.0001Type=lineUserData=Visible=on 根據(jù)軸是線對象的父代,可查軸的句柄gca 可查色序get(gca,colororder)ans=110(線)101(字)0
11、11100010001001 設置線條和窗口的顏色set(h1,color,1 0 0)RGB配色方案set(h1,color,1 0.5 0)02468100123456789100246810012345678910set(gcf,color,0.50.50.5)set(gcf,color,0.50.60.8)012345678910012345678910012345678910012345678910 例:獲取同軸上子對象的句柄和相應對象類型。clf reset,t=(0:100)/100*2*pi;H_line=line(Xdata,t,Ydata,sin(t)text(pi,0.8
12、,fontsize14sin(t)H_c=get(get(H_line,parent),children)T=get(H_c,Type)findobj指令語法格式:h2=findobj(h1,屬性名稱,屬性值);含義:根據(jù)限定的對象列表找出與對象的屬性名和屬性值匹配的對象句柄值例子:例子:clfreset,t=(0:pi/100:2*pi);tt=t*11;yy=sin(tt)*diag(0.51);plot(tt,yy),Hb=findobj(gca,Color,b)%在當前軸上尋找藍線的句柄例:作正弦、余弦曲線,將正弦曲線改為虛線,將余弦曲線幅度減為1/2高度,如何用句柄實現(xiàn)。x=0:2*
13、pi/180:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,x,y2,x,zeros(size(x),k-)01234567-1-0.500.5101234567-1-0.8-0.6-0.4-0.200.20.40.60.81 首先查詢各對象的屬性get(gcf)h=get(gcf,children)h=hh=get(gca,children);hh=01234567-1-0.500.5101234567-1-0.8-0.6-0.4-0.200.20.40.60.81 修改屬性y11=get(hh(2),ydata);y22=y11/2;set(hh(2),ydata,
14、y22)set(hh(3),linestyle,:)控制一個圖形對象是通過句柄實現(xiàn)的,具體是通過句柄操作函數(shù)get,set將某對象句柄屬性作設置與修改。對象屬性的直接操作對象屬性的直接操作是通過當前句柄來實現(xiàn)的,所以首先要獲得當前句柄值以及對象的屬性,然后再查詢或修改。get(h)get(h,propertyname)set(h)set(h,propertyname,value)set(h,屬性名稱,新屬性)color,rlinestyle,:Box 屬性:表示是否需要坐標軸上的方框,選項可以為 on 和 off,默認的值為 on。set(gca,box,off)ColorOrder 屬性:設
15、置多條曲線的顏色順序,應該為一個 n x 3 矩陣,可以由 colormap()函數(shù)來設置。NextPlot 屬性:表示坐標軸圖形的更新方式,replace 是默認的選項,表示重新繪制,而 add 選項表示在原來的圖形上疊印,它相當于直接使用 hold on 命令的效果。Title 屬性:本坐標軸標題的句柄。而其具體內(nèi)容由 title()函數(shù)設定,由此句柄就可以訪問到原來的標題了。t1=title(test);set(t1,fontsize,15)坐標軸對象其他一些屬性:坐標軸對象其他一些屬性:XLabel 屬性:x 軸標注的句柄,其內(nèi)容由 xlabel()函數(shù)設定。此外,類似地還有 YLab
16、el 和 ZLabel 屬性等。XDir 屬性:x 軸方向,可以選擇 normal(正向)和 rev(逆向),此外 YDir 和 ZDir 屬性也是類似的。set(gca,xdir,rev)XGrid 屬性:表示 x 軸是否加網(wǎng)格線,可選值為 off 和 on,此外還類似地有 YGrid 和 ZGrid 選項。set(gca,xgrid,on)GridLineStyle 屬性:網(wǎng)格線類型,如實線、虛線等,其設置類似于 plot()函數(shù)的選項,默認值為:。set(gca,gridlinestyle,-)XLim 屬性:x 軸上下限,以向量 xm,xM 形式給出。此外,還有 YLim 和 ZLim
17、 屬性,前面介紹的 axis()函數(shù)實際上是對這些屬性的直接賦值。set(gca,xlim,030)XScale 屬性:x 軸刻度類型設置,可以為 linear(線性的)和 log(對數(shù)的)。此外還有 YScale 和 ZScale 屬性。set(gca,yscale,log)XTick 和 XTickLabel 屬性:XTick 屬性將給出 x 軸上標尺點值的向量,而 XTickLabel 將存放這些標尺點上的標記字符串。對 y 和 z 軸也將有相應的標尺屬性,如 ZTick 等。x=-pi:pi/2:pi;Y=sin(x);plot(x,y);set(gca,xtick,-pi:pi/2:
18、pi)%設置標尺點的值set(gca,xticklabel,-pi,-pi/2,0,pi/2,pi)%標記標尺點上的字符例子:2.對象屬性的繼承操作 對象屬性的繼承操作是通過父代對象,設置缺省對象屬性來實現(xiàn)的。父代句柄屬性中設置缺省值后,所有子代對象均可以繼承該屬性的缺省值。屬性缺省值的描述結構為:Default+對象名稱+對象屬性如:DefaultFigureColor圖形窗口的顏色DefaultLineLineWide線的寬度DefaultLineColor線的顏色缺省值的獲得與設置也是由get,set函數(shù)實現(xiàn)的例:get(0,DefaultFigureColor)獲得圖形 窗口的缺省值
19、set(h,DefaultLineColor,r)設置線的 顏色為紅色例:set(gca,DefaultTextColor,1 0 0)gtext(正弦)gtext(余弦)在軸對象上設置字對象的顏色缺省值為紅色 繼承該缺省值在圖上添加紅色的文字注釋例:在軸對象上(父代對象)設置線的顏色缺省值為紅色x=0:2*pi/180:2*pi;y=sin(2*x);set(gca,DefaultLineColor,1 0 0);h=line(x,y)h=set(h,color,default)3.其它操作default由父代繼承factory廠家設定省缺值remove清除設定缺省值例:set(gca,de
20、faultlinecolor,remove)set(h,color,factory)例子:例子:影響影響lineline或或plotplot畫線時線型和色彩的畫線時線型和色彩的“父父”對象設置。對象設置。(1)指令中直接指定線型或)指令中直接指定線型或/和顏色:用和顏色:用“紅虛點線紅虛點線”繪所有曲線。繪所有曲線。clf reset;t=(0:pi/50:2*pi);k=0.4:0.1:1;Y=cos(t)*k;line(t,Y,Color,1 0 0,LineStyle,-.)(2 2)軸對象屬性)軸對象屬性 LineStyle LineStyle 和和 ColorOrder ColorO
21、rder 的影響的影響clf resetset(gca,ColorOrder,0.7 0.7 0.7,LineStyle,:)line(t,Y)(3)在)在“圖型窗口對象圖型窗口對象”上,對軸的缺省屬性上,對軸的缺省屬性 DefaultAxesLineStyleOrder 和和 DefaultAxesColorOrder 設置所產(chǎn)生的影響設置所產(chǎn)生的影響clf resetset(gcf,DefaultAxesLineStyleOrder,:);set(gcf,DefaultAxesColorOrder,1 0 0);line(t,Y)例:x=0:2*pi/180:2*pi;y=sin(2*x)
22、;h=line(x,y)將所有新圖形窗口的顏色由省缺值設置為適中的灰色set(0,DefaultFigureColor,0.5 0.5 0.5)h=line(x,y)set(h,color,m,linewidth,2,linestyle,*)set(0,defaultfigurecolor,b)set(0,defaultaxescolor,g)h=line(x,y)set(h,color,r)set(gca,xcolor,w)set(gca,ycolor,w)h=surf(peaks(30)set(0,defaultsurfaceedgecolor,w)h1=surf(peaks(30)set
23、(h1,edgecolor,default)t=0:0.1:2*pi;y=sin(t);plot(t,y)h=gcf;set(h,color,0,1,0.5,MenuBar,none,name,句柄作圖示例)%a=get(h,child);gridon a=gca set(a,color,y,linewidth,2,fontangle,italic,fontsize,15,GridLineStyle,-)p=get(a,child)set(p,color,r,linestyle,-,marker,*,markeredgecolor,b,markersize,10)自制光標指針形狀(1)在屏幕的
24、右上方創(chuàng)建一個背景為“橘黃”色的圖形窗,窗名為“試驗窗”。bdw=0.01;%左右兩側邊和底邊的寬度tpw=0.15;%頂邊寬度不能太小pos=1/2+bdw,2/3+bdw,1/2-2*bdw,1/3-bdw-tpw;figure(Units,normalized,Position,pos,Color,0.9,0.65,0)set(gcf,Name,試驗窗)2)為該圖形窗制作一個“手指”狀光標指針P=ones(16,16)*NaN;P(1,5)=1;P(2:14,4)=1;P(15,5)=1;P(16,6:11)=1;P(15,12)=1;P(9:14,13)=1;P(2:9,6)=1;P(
25、9,7)=1;P(8,8)=1;P(9,9)=1;P(8,10)=1;P(9,11)=1;P(8,12)=1;P(2:14,5)=2;P(10:15,6:11)=2;P(9,8)=2;P(9,10)=2;P(9:14,12)=2;set(gcf,Pointer,Custom,PointerShapeCData,P,PointerShapeHotSpot,2,5)制作個性化雙坐標系制作個性化雙坐標系 tp=(0:100)/100*5;yp=8+4*(1-exp(-0.8*tp).*cos(3*tp);tt=(0:500)/500*40;yt=120+40*(1-exp(-0.05*tt).*co
26、s(tt);clfreset,h_ap=axes(Position,0.13,0.13,0.7,0.75);set(h_ap,Xcolor,b,Ycolor,b,Xlim,0,5,Ylim,0,15);nx=10;ny=6;pxtick=0:(5-0)/nx):5;pytick=0:(15-0)/ny):15;set(h_ap,Xtick,pxtick,Ytick,pytick,Xgrid,on,Ygrid,on)h_linet=line(tp,yp,Color,b);set(get(h_ap,Xlabel),String,時間rightarrow(分))set(get(h_ap,Ylabel
27、),String,壓力rightarrow(times105Pa)h_at=axes(Position,get(h_ap,Position);set(h_at,Color,none,Xcolor,r,Ycolor,r);set(h_at,Xaxislocation,top)set(h_at,Yaxislocation,right,Ydir,rev)set(get(h_at,Xlabel),String,fontsize15fontname隸書時間rightarrow(分))set(get(h_at,Ylabel),String,(circC)fontsize15leftarrowfontname隸書零下溫度)set(h_at,Ylim,0,210)line(tt,yt,Color,r,Parent,h_at)xpm=get(h_at,Xlim);txtick=xpm(1):(xpm(2)-xpm(1)/nx):xpm(2);tytick=0:(210-0)/ny):210;set(h_at,Xtick,txtick,Ytick,tytick)熟悉圖形對象句柄與句柄操作 掌握圖形對象屬性的查詢與操作 能夠任意設置圖形對象的屬性
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。