MATLAB将两个.fig文件复制到一个图中

时间:2014-05-05 15:30:47

标签: matlab plot copy

经过多次搜索,我发现了很多类似的问题,但是我仍然无法让copyobj()简单地复制特定的子对象/句柄。

(注意:我对MATLAB图形很新,所以我的术语/对图形/句柄的理解可能是错误的。请随意解决这个问题!)

基本上,每个其他示例似乎都将copyobj()allchild()结合使用。问题源于一些子对象覆盖了图例/标题/等以及实际的行。

例如,使用两个虚拟图表来获取以下代码:

f = figure;
plot(1:10);
title('plot 1');

f2 = figure;
plot(fliplr(1:10));
title('plot 2');

这将产生以下图表:

Plots 1

如果我遵循涉及allchild()的建议,我的第一个情节将成为我的第二个情节。我想要绘制两条线。您还会注意到旧的" Plot 1" title现在显示两个标题的碰撞是相互复制的:

copyobj(allchild(f2),f);

Plot collision

因此经过更多的研究后,我想我可以提取" Line"孩子而不是所有的孩子手柄,并将其添加到我的第一个情节。这会导致错误:

copyobj(findobj(f2, 'Type', 'line'), f);

引发以下错误:

??? Error using ==> copyobj
Object line[1] can not be a child of parent
figure[1]

我的最终目标是这样的(插图在MS Paint中完成。请忽略丑陋):

Goal plot

1 个答案:

答案 0 :(得分:5)

在这里再读一遍:http://www.mathworks.com/help/matlab/learn_matlab/understanding-handle-graphics-objects.html我遇到了关于图形对象的图表:

Chart

似乎使用allchild()必须以某种方式获取Axes个对象,然后可以将其绘制成图形。引发的错误是尝试将Line (Plot Objects)直接绘制到Figure的结果。

如果我将Line (Plot Object)绘制为Axes,则效果非常好:

f = figure;
plot(1:10);
title('plot 1');

f2 = figure;
plot(fliplr(1:10));
title('plot 2');

copyobj(findobj(f2, 'Type', 'line'), gca(f));

Final plot