【问题标题】:MATLAB: Saving all tabs of a docked figure in a single .fig fileMATLAB:将停靠图形的所有选项卡保存在单个 .fig 文件中
【发布时间】:2015-06-19 01:14:03
【问题描述】:

我有一个在 for 循环中生成的带有 4 个选项卡的 matlab 图。循环内的每个选项卡都会覆盖图形句柄。我想按原样保存这个图形窗口(在单个图形窗口中有 4 个选项卡),但是使用 savefig() 命令(在循环外使用)我只能保存最后一个选项卡。使用循环内使用的 savefig(handle,_) 命令(以及循环外的 close(handle) ),我可以保存在单个文件中,但选项卡会在单独的图形窗口中打开。有解决方法吗?

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    如果您将句柄存储到标签组的父级以与savefig() 一起使用,它还应该保存所有子对象。

    例如:

    h.mainfig = figure();
    h.tabgroup = uitabgroup(h.mainfig, 'Position', [.05 .1 .9 .8]);
    
    ntabs = 4;
    
    for ii = 1:ntabs
        h.tab(ii) = uitab(h.tabgroup, 'Title', sprintf('Tab_%i', ii));
    end
    
    % Make a sample plot on tab 2
    h.axes(2) = axes('Parent', h.tab(2));
    plot(h.axes(2), 1:10);
    
    savefig(h.mainfig, 'test.fig');
    

    打开test.fig 应该会重新打开整个图。

    除了一般情况外,我建议不要在创建事物时覆盖它们,这样以后解决问题会很痛苦,而且每次迭代都覆盖它们并不会真正获得任何收益。

    【讨论】:

    • 感谢您的回答。您还可以添加关于如何使用图形句柄在每个选项卡中包含子图的内容吗?如果我绘制一些东西,它会在标签后面。
    • 您需要创建axes 对象并确保它们的Parent 属性设置为您希望它们显示的选项卡。通过保存这些轴句柄,您可以稍后在代码中专门绘制它们。我已经更新了我的答案以包含一个示例。
    猜你喜欢
    • 2019-11-03
    • 2018-03-18
    • 2012-08-07
    • 2016-10-26
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多