将现有的MATLAB图绘制成另一个图

时间:2013-08-28 00:50:01

标签: matlab plot

我使用plot命令绘制图形,然后使用set命令更改了许多属性。我还存储了情节的句柄(比如说h1)。

我需要的是使用句柄在我的代码中稍后再次绘制相同的数字。我检查了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可以将数字(包括图例)复制到子图中。

4 个答案:

答案 0 :(得分:5)

我之前遇到过这种情况。根据您要执行的操作,函数copyobj可能是合适的。此功能允许您获取一个轴的内容并将其复制到新图形。

答案 1 :(得分:5)

改善@PeterM不错的答案,一种更简单的方法是:

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

但这取决于你想要什么,如果你只想要轴或者整个人物......(顺便说一句,它似乎并没有复制传奇手柄)。

答案 2 :(得分:2)

您可以使用saveas将数字保存在文件中,并使用open从该文件中加载完全相同的数字。

答案 3 :(得分: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')