matlab 中annotation的操作可以象windows的“畫(huà)圖”一樣很方便的對(duì)圖像進(jìn)行標(biāo)注,但如果所繪的圖需要修改,其標(biāo)注也需要再手工重復(fù)操作一次,所以在這種情況下用腳本進(jìn)行annotation標(biāo)注就省時(shí)省力了。annotation是基于figure坐標(biāo)的,而標(biāo)注往往是基于axes坐標(biāo)的,簡(jiǎn)單的說(shuō)前者是框后者是框中的畫(huà),matlab好像沒(méi)有將axes坐標(biāo)與annotation直接聯(lián)系起來(lái),所以將axes坐標(biāo)轉(zhuǎn)變?yōu)閒igure坐標(biāo)是annotation標(biāo)注的核心。
1. plot 函數(shù)所繪圖形的annotation標(biāo)注
用plot繪制圖形后,再用annotation('textarrow',xf,yf)等標(biāo)注,其中xf和yf是由參考[1]中的dsxy2figxy( )函數(shù)從axes坐標(biāo)轉(zhuǎn)換得到的,圖1給出了一個(gè)例子,分別對(duì)圖1中axes坐標(biāo)的(0.7, 48)、(0.8, 48)和(1.5,38)進(jìn)行標(biāo)注。
圖1 在plot繪圖中的標(biāo)注
2.polar 函數(shù)所繪圖形的annotation標(biāo)注
用polar繪制圖形后如果還用[1]中dsxy2figxy( )函數(shù)進(jìn)行轉(zhuǎn)換則一般得不到正確的figure坐標(biāo)。這里提供一個(gè)初略的方法。先用polar繪圖,然后設(shè)置figure為正方形,如set(gcf,'position',[100,100,600,600]),正方形使figure的normalized坐標(biāo)與polar繪的圓在x和y軸的比例保持一致,用axis(gca),get(gca,'units')和get(gca,'position')得到axes坐標(biāo)范圍、單位及其在figure坐標(biāo)中的位置等信息,這些信息只作參考, 接著可以通過(guò)axis([-2.85,2.85,-2.85,2.85])設(shè)置坐標(biāo)范圍,用set(gca,'Position',[0.1,0.1,0.8,0.8])設(shè)置其位置,之后就可以進(jìn)行坐標(biāo)轉(zhuǎn)換了,這里通過(guò)一個(gè)簡(jiǎn)單的轉(zhuǎn)換函數(shù)pxy2fxy( )實(shí)現(xiàn),代碼如圖3所示。圖2給出了polar繪圖用以上方法進(jìn)行的標(biāo)注。
圖2 polar繪圖中的標(biāo)注
圖3 轉(zhuǎn)換代碼
|