5

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

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

感谢您提供任何帮助,如果我的问题过于基本,我深表歉意。

4

3 回答 3

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

于 2011-12-22T14:49:18.913 回答
1

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

例子:

>> plot(1:4,5:8)
>> saveas(gcf,'test.fig')
>> close all
>> open('test.fig')
于 2011-12-22T14:21:29.087 回答
1

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

您可以预先计算所有绘图,然后简单地将“可见”属性设置为“真”“假”

于 2011-12-22T14:26:53.567 回答