gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:21:09 29 4
gpt4 key购买 nike

经过多次搜索,我发现了很多与此类似的问题,但是我仍然无法得到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”标题现在显示两个标题相互重叠复制的冲突:

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

最佳答案

在这里阅读更多内容后: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

关于MATLAB 将两个 .fig 文件复制到一个图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23476288/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com