2016-08-15 120 views
2

我知道關於這個問題有很多答案,但是我沒有找到任何幫助我的答案。 我在MATLAB中有2個座標軸,我想單獨保存每個軸爲.jpeg或任何其他格式。 我試過的任何方式 - 我得到的圖像包括所有的圖形用戶界面或剪切圖。 任何想法如何獲得2張好圖片?在GUI中保存座標軸爲圖像MATLAB

+0

我試圖打開形象,做copyobj,然後saveas,但圖像被切斷。 – erez

+0

我也試圖做save​​fig,在這種情況下,所有的數字都保存了,我也試過另一個選項,目前我不記得了,但他們沒有幫助... – erez

+0

我回滾了你的編輯。如果你花時間去編輯你的問題,請在主要問題文章中添加有意義的信息/問題。不要只是添加一條基本上說「請在評論中回答我的其他問題」的行。 – Hoki

回答

0

您可以遍歷所有的軸並調用getframe來獲取該軸。然後您可以使用imwrite保存cdata

% Get a list of all axes in the figure 
allax = findall(gcf, 'type', 'axes'); 

for k = 1:numel(allax) 
    % Get the axes as an image 
    fr = getframe(allax(k)); 

    % Save the image 
    imwrite(fr.cdata, sprintf('%d.png')); 
end 

如果你已經有了軸手柄,你可以只使用那些直接

fr = getframe(axes2); 
imwrite(fr.cdata, 'axes2.png') 

fr = getframe(axes1); 
imwrite(fr.cdata, 'axes1.png') 

如果你想包括X和Y軸的標籤,你可以不喜歡

function axes2image(ax, filename) 

    hfig = ancestor(ax, 'figure'); 

    rect = hgconvertunits(hfig, get(ax, 'OuterPosition'), ... 
          get(ax, 'Units'), 'pixels', get(ax, 'Parent')); 

    fr = getframe(hfig, rect); 
    imwrite(fr.cdata, filename); 
end 

axes2image(axes2, 'axes2.png') 
axes2image(axes1, 'axes1.png') 
+0

謝謝,但有2個問題: – erez

+0

1.我怎麼知道哪個是axes1 \ axes2等.. – erez

+0

2.我也想看看X和Y軸的值。另一個問題 - 我可以定義文件路徑嗎? (我希望它會被用戶輸入) – erez