在GUI中将轴保存为图像MATLAB

时间:2016-08-15 12:06:54

标签: matlab matlab-figure

我知道有很多关于这个问题的答案,但我找不到任何帮助我的答案.. 我在MATLAB中有一个带有2个轴的GUI,我想将每个轴分别保存为.jpeg或任何其他格式。 我试过的任何方式 - 我得到的图像包括所有的GUI或剪切图形。 不知道如何才能获得2张好照片?

1 个答案:

答案 0 :(得分:1)

你可以遍历所有的轴并调用getframe来获得这些轴。然后,您可以使用cdata保存imwrite

% 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')