经过多次搜索,我发现了很多类似的问题,但是我仍然无法让copyobj()简单地复制特定的子对象/句柄。
(注意:我对MATLAB图形很新,所以我的术语/对图形/句柄的理解可能是错误的。请随意解决这个问题!)
基本上,每个其他示例似乎都将copyobj()
与allchild()结合使用。问题源于一些子对象覆盖了图例/标题/等以及实际的行。
例如,使用两个虚拟图表来获取以下代码:
f = figure;
plot(1:10);
title('plot 1');
f2 = figure;
plot(fliplr(1:10));
title('plot 2');
这将产生以下图表:
如果我遵循涉及allchild()
的建议,我的第一个情节将成为我的第二个情节。我想要绘制两条线。您还会注意到旧的" Plot 1" title现在显示两个标题的碰撞是相互复制的:
copyobj(allchild(f2),f);
因此经过更多的研究后,我想我可以提取" Line"孩子而不是所有的孩子手柄,并将其添加到我的第一个情节。这会导致错误:
copyobj(findobj(f2, 'Type', 'line'), f);
引发以下错误:
??? Error using ==> copyobj
Object line[1] can not be a child of parent
figure[1]
我的最终目标是这样的(插图在MS Paint中完成。请忽略丑陋):
答案 0 :(得分:5)
在这里再读一遍:http://www.mathworks.com/help/matlab/learn_matlab/understanding-handle-graphics-objects.html我遇到了关于图形对象的图表:
似乎使用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));