经过多次搜索,我发现了很多类似的问题,但是我仍然无法通过copyobj()来复制特定的子对象/句柄.
(注意:我对MATLAB图形很新,所以我的术语/对数字/句柄的理解可能是错误的.请随意解决这个问题!)
基本上每个其他示例似乎copyobj()与allchild()一起使用.问题源于一些子对象覆盖图例/标题/等以及实际行.
例如,使用两个虚拟图表获取以下代码:
f = figure;
plot(1:10);
title('plot 1');
f2 = figure;
plot(fliplr(1:10));
title('plot 2');
Run Code Online (Sandbox Code Playgroud)
这将产生以下图:

如果我遵循这个建议allchild(),我的第一个情节就变成了我的第二个情节.我想要绘制两条线.您还会注意到,旧的"Plot 1"标题现在显示两个标题的碰撞被复制到另一个之上:
copyobj(allchild(f2),f);
Run Code Online (Sandbox Code Playgroud)

因此,经过更多的研究,我认为我可以提取"Line"子代替所有子句柄,并将其添加到我的第一个绘图中.这会导致错误:
copyobj(findobj(f2, 'Type', 'line'), f);
Run Code Online (Sandbox Code Playgroud)
引发以下错误:
??? Error using ==> copyobj
Object line[1] can not be a child of parent
figure[1]
Run Code Online (Sandbox Code Playgroud)
我的最终目标是这样的(在MS Paint中完成的插图.请忽略丑陋):

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

似乎使用allchild()必须以某种方式获取Axes对象,然后可以将其绘制成图形.抛出的错误是试图Line (Plot Objects)直接绘制到a的结果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));
Run Code Online (Sandbox Code Playgroud)
