2013-08-28 96 views
5

我使用繪圖命令來繪製圖形,然後使用set命令更改其大量屬性。我還儲存了情節的句柄(比如h1)。將現有的MATLAB繪圖繪製到另一個圖中

我需要的是使用手柄在我的代碼中再次繪製相同的圖形。我檢查了plot命令並沒有發現任何接受句柄的版本。我也想到了獲取Xdata和Ydata並使用它們重新繪製相同的圖形。

什麼是最簡單的解決方案?

編輯1:基於PeterM建議的基於copyobj的工作示例代碼。

hf(1) = figure(1); 
plot(peaks); 

hf(2) = figure(2); 
plot(membrane); 

hf(3) = figure(3); 
ha(1) = subplot(1,2,1); 
ha(2) = subplot(1,2,2); 

for i = 1:2 
    hc = get(hf(i),'children'); 
    hgc = get(hc, 'children'); 
    copyobj(hgc,ha(i)); 
end 

編輯2:我還發現this function能複製的數字(包括圖例)到一個插曲。

回答

5

我以前遇到過這種情況。根據你正在嘗試做的功能copyobj可能是合適的。該功能可讓您獲取一個軸的內容並將其複製到一個新圖形。

2

您可以使用saveas將圖保存在文件中,並使用open從該文件加載完全相同的圖。

3

提高@PeterM不錯的答案,一個更簡單的方法是:

fig2H=copy(gcf) % or change gcf to your figure handle 

但是這取決於你想要什麼,如果你只想要軸或孔身影......

順便說一句,它似乎不復製圖例句柄,至少不是在HG2

0

這將是最懶惰的方式來完成你想要的。

% Sample plot 
f1 = figure(1); 
plot(0:0.1:2*pi, sin(0:0.1:2*pi)); 
f2 = figure(2); 

% The code you need 
saveas(f1, 'temp.fig') 
f2 = hgload('temp.fig') 
delete('temp.fig')