Re: [問題] 請問subplot的圖可以萃取出其中之一嗎?

看板MATLAB作者 (Veritas)時間18年前 (2007/02/08 19:03), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串1/1
※ 引述《phonex (一生懸命)》之銘言: : 我想要利用 subplot 將三張圖存在一個fig檔 : 但是下次開啟的時候, 又想要對其中一張圖放大仔細看 : 請問又沒有方法可以從原來的 fig 檔中 抓出其中一張圖 : 或者是將另外兩張圖刪除呢? 首先你要弄清楚matlab中figure 的架構 close all x = -pi:.1:pi; y = sin(x); plot(x,y) 當以上指令執行到plot時 matlab會create一個figure 再createn附屬於這個figure的axes 然後在這個axes上畫圖 close all x = -pi:.1:pi; y1 = sin(x); y2 = cos(x); subplot(2,1,1);plot(x,y1) subplot(2,1,2);plot(x,y2) 當以上指令執行到subplot時 matlab會create一個figure 及 "兩個" 附屬於這個figure的axes plot會自動在第一個axes上畫圖 第二個subplot會跳到第二個axes 也就是去activate第二個axes 接下來的plot就在這個axes上畫圖 請先保留這個圖以便進一步解說 好...所以你現在要做的事情是 把你想要的axes放大到整個figure 並把其他axes刪掉 首先你要找到這個figure下一共有多少axes 我們要用get指令 t=get(gcf,'children') get用來取出物件的property gcf就代表目前active的figure children就是figure的其中一種property 在這裡就代表所有歸gcf管的axes 你會發現t是個長度為二的vector 因為我們已經用subplot創了兩個axes 如果執行delete(t(1)) 那cos的就會被刪去 接下來得把剩下的axes放大 set(t(2),'position',[0 0 1 1]) set就是重新設定物件的property t(2)就是我們要設定的axes position是axes的其中一種property [0 0 1 1]就是我們要設定的值 分別代表左底寬高 因為你希望放到最大 所以 "左邊" 距離figure的框要是零 而 "底邊" 距離figure的框要是零 寬度及高度都要是 100% 這篇講的很簡略 你應該把matlab help中的Graphics翻過一次 尤其是Handle graphic Objects 來互相對照 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.54.155

02/08 19:53, , 1F
推,很詳細阿
02/08 19:53, 1F

02/09 02:31, , 2F
堆 多謝大大,受益良多
02/09 02:31, 2F

02/09 10:08, , 3F
感謝強者的解釋
02/09 10:08, 3F
文章代碼(AID): #15omERJJ (MATLAB)
文章代碼(AID): #15omERJJ (MATLAB)