将matlab图存储在变量中并重用它

时间:2011-12-22 14:08:57

标签: user-interface matlab plot figure

我编写了一个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。

显然我对图形手柄没有经验,所以我想这对某些人来说很简单。我无法找到任何有关它的相关文档,每个人都建议简单地创建一个重新创建所有内容的函数,但这正是我想要避免的。

感谢任何帮助,如果我的问题是关于太基本的事情,我会道歉。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

我能想到的一个解决方案是使用saveas功能将数据存储在硬盘上,然后再用负载调用它们。

示例:

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

答案 2 :(得分:1)

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

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