Matlab GUI:将绘图迁移到新窗口

时间:2011-09-13 10:55:43

标签: user-interface matlab plot

我遇到过这样的问题,希望你们能帮助我。

我的GUI中有一个情节,包含多行不同的linspecs和一组图例。 我已经制作了一个上下文菜单,允许用户在一个新窗口中打开完全相同的图(保留所有行设置,标题,图例等)(默认图,它可以保存/编辑图形)。 但是我找不到一种简单的方法来迁移绘图,除了重新运行非常复杂的绘图命令(绘制不同的数据等)

所以,我正在寻找以下两种方式的解决方案:

  1. 是否有一种简单的方法将绘图迁移到新的图形窗口?

  2. 或者是否可以直接使用当前界面保存绘图?

  3. 对于2,我想澄清我只想保存图,而不是所有的GUI界面。我尝试了saveas(handle.Plot,...),但它将GUI界面保存为实体。

    我希望这一点已经明确,谢谢你的时间。欢呼声。

1 个答案:

答案 0 :(得分:3)

对于这个任务,你可以使用内置的Matlab函数copyobj来完成这个(即你问题中提到的第一个选项)。

以下代码演示了它的用法:

h1=figure;
a1=plot((1:100),rand(1,100),'r-');
hold on
plot((1:100),rand(1,100),'b+');
legend({'plot1';'plot2'});
h2=figure;
copyobj(get(h1,'children'),h2);

希望它在您的情况下也能正常运作。

更新:据我所知,你的第二个解决方案将涉及saveas功能,不幸的是它与图形环境一起工作而不是轴(就像你经历过的那样)。因此,解决方法可能涉及使用上面给出的方法将所需轴复制到新图形,然后使用saveas