【问题标题】:Store matlab plot inside a variable and reuse it将 matlab 绘图存储在变量中并重用它
【发布时间】:2012-01-26 03:56:59
【问题描述】:

我编写了一个 GUI 应用程序,在对大型数据集执行一些分析后,它提供了对数据的多个绘图选项的可能性(通过弹出菜单)。

因此,现在每个图都是在弹出菜单中选择后即时计算的。这既不高效又耗时,所以我想只计算一次所有这些图,然后以某种方式将它们存储在变量中,并能够将它们中的每一个分配给 gui 轴的句柄。

基本上,我希望将 h=plot([1 2 3]) 类型的图存储在变量中(不可视化),并能够在以后按需可视化它。 我尝试将轴句柄分配给绘图句柄,例如

h=plot([1 2 3]);
handles.plottingscreen_axe=h; 

...但它什么也看不见。为了简化问题,我一直在尝试使用终端上的测试数据来简单地将一个图形句柄分配给另一个图形句柄,以便以某种方式将可视化转储到另一个图形但没有任何效果,例如

h=plot([1 2 3]);
f=figure;
f=h;

...但我无法将 h 的图可视化为图 f。

显然我对图形句柄没有经验,所以我想这对于有经验的人来说很简单。我还没有找到任何相关的文档,每个人都建议简单地制作一个重新绘制所有内容的函数,但这正是我想要避免的。

感谢您的帮助,如果我的问题太基本,我深表歉意。

【问题讨论】:

    标签: user-interface matlab plot figure


    【解决方案1】:
    figure;
    ah = axes;
    hold(ah,'on');  
    %Axes must have hold on or lh(1) will become invalid after lh(2) is created
    lh(1) = plot(ah,[1 2 3],[1 2 3],'r','visible','off');
    lh(2) = plot(ah,[1 2 3],[3 2 1],'b','visible','off');
    

    这将打开第 1 行(红色)

    set(lh(1),'visible','on');set(lh(2),'visible','off')
    

    这将打开第 2 行(蓝色)

    set(lh(1),'visible','off');set(lh(2),'visible','on')
    

    在您的 GUI 中,您将需要某种回调来循环关闭所有线路句柄的可见开/关状态。注意:如果这些是非常大的数据集并且您有很多行,它可能会占用大量内存。

    【讨论】:

      【解决方案2】:

      我认为还有另一种解决方案。

      您可以预先计算所有绘图,然后只需将 'Visible' 属性设置为 'true''false' >

      【讨论】:

      • @AeroEngy 对它的描述非常好,顺便说一句。
      【解决方案3】:

      我能想到的一种解决方案是使用 saveas 功能将数字存储在硬盘上,然后通过加载调用它们。

      示例:

      >> plot(1:4,5:8)
      >> saveas(gcf,'test.fig')
      >> close all
      >> open('test.fig')
      

      【讨论】:

        猜你喜欢
        • 2022-10-17
        • 1970-01-01
        • 2017-08-14
        • 1970-01-01
        • 2016-09-23
        • 1970-01-01
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多