Matlab畫圖進階
轉自http://blog.sina.com.cn/s/blog_6407cd700101921q.html
axes和figure都屬於graphics object,用於繪圖與圖像顯示,既然是兩種東西,當然兩者之間並不是等同的關系,下面將就幾個問題進行解釋,讓大家正確區分這兩個概念。
第一:什麽是figure?
figure的翻譯是圖像,這個誰都知道,但是在matlab中的figure對象準確意義應該是:matlab軟件用於直觀性圖形輸出的窗口個體,這個概念很多人沒有。
第二:什麽是axes?
一張白紙上可以畫畫,你可以在紙上的任何區域畫,這個確定畫圖區域並確定作圖的一些方式的東西的就是axes,也就是坐標對象。畫圖的作用就是,在當前的活動figure對象中的一個坐標對象上作圖。
第三:axes與figure
一張白紙上可以畫在幾個區域內畫圖,而所謂區域,必須存在於白紙上才有意義。figure上可以有多個axes,axes必須在figure上,要畫圖必須有axes。
第四:關於句柄
axes和figure的對象屬性能讓用戶方便的進行操作,例如在figure上選中一個axes:
set(figure_handle,‘CurrentAxes‘,axes_handle)
第五:關於axes圖像復制問題
前些天想從在gui中現這樣一個功能:在gui中對其中的一個axes上的圖像進行copy fiure,結果無論是hgexport函數還是print,操作對象只能是fiure句柄,在網上找了找發現有幾個朋友跟我有同樣的想法,都是沒看到解決辦法,一想的確是2了,就好比在figure用了subplot命令,難道你還想一次copy figure只復制一個子圖麽?辦法不是沒有,將子圖復制為新的figure對象輸出後刪除,但是沒太大意義。
實現方法:
1 newf = figure(‘visible‘,‘off‘); %產生不可見的figure對象 2 3 axes2 = copyobj(handles.axes1,gcf); %把GUI中的圖復制到新figure中 4 5 set(axes2,‘units‘,‘default‘,‘position‘,‘default‘); 對axes進行設置 6 7 hgexport(gcf,‘-clipboard‘); %輸出到剪貼板 8 9 delete(newf); %刪除不可見的figure
註意,創建為新的坐標軸對象後,必須對其位置,大小進行調整,否則會出現混亂,即上文的set語句,根據需要進行調整。
Matlab畫圖進階