将现有的MATLAB图绘制到另一个图形中

cbeh67ev  于 2022-12-04  发布在  Matlab
关注(0)|答案(5)|浏览(923)

我用plot命令绘制了一个图形,然后用set命令改变了它的很多属性,我还保存了图形的句柄(比如h1)。
我需要的是稍后在代码中使用句柄再次打印同一地物。我检查了plot命令,没有找到任何接受句柄的版本。我还考虑获取扩展数据和Y数据,并使用它们重新打印同一地物。
最简单的解决方案是什么?
编辑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,它可以将图形(包括图例)复制到子情节中。

i34xakig

i34xakig1#

我以前遇到过这种情况。根据你要做的事情,函数copyobj可能是合适的。这个函数可以让你把一个轴的内容复制到一个新的图形中。

inn6fuwd

inn6fuwd2#

改进@PeterM不错的回答,一个更简单的方法是:

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

但这取决于你想要什么,如果你只想要轴,或整个图...(顺便说一句,它似乎没有复制图例处理)。

dwbf0jvd

dwbf0jvd3#

您可以使用saveas将图形储存在档案中,然后使用open从这个档案载入完全相同的图形。

wgxvkvu9

wgxvkvu94#

这将是最懒惰的方式来完成你想要的。

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

gcxthw6b5#

我已经使用了函数figs2subplots(在原始问题的Edit 2中给出)-它完成了这项工作,非常容易使用。

相关问题