我在这里猜测,但它听起来像你想要创建一个轴显示不同的情节,传说等基于下拉菜单中的哪一项被选中的GUI。如果这是正确的,我猜你遇到的问题是在轴上绘制一组新数据会导致旧数据被替换,这使得每次选择新菜单时必须重新生成整个绘图项目。
我会考虑解决这个问题的一种方法是利用图形对象的UIPANELs和'Visible'
property。您可以为每个菜单项创建一个面板,为每个菜单项添加一个轴以及任何想要绘制的数据,然后使用SET命令简单切换面板的可见性,而不是在选择新菜单项时重新绘制所有内容。这里有一个例子:
hFigure = figure; %# Create a figure
hPanelA = uipanel('Parent',hFigure); %# Add panel A to the figure
hAxesA = axes('Parent',hPanelA); %# Add an axes to panel A
plot(hAxesA,1:10,rand(1,10),'r'); %# Plot a red line
text(5,0.5,'hello','Parent',hAxesA); %# Plot some text
legend(hAxesA,'red line'); %# Add a legend
hPanelB = uipanel('Parent',hFigure); %# Add panel B to the figure
hAxesB = axes('Parent',hPanelB); %# Add an axes to panel B
plot(hAxesB,1:10,rand(1,10),'b'); %# Plot a blue line
text(5,0.5,'world','Parent',hAxesB); %# Plot some text
legend(hAxesB,'blue line'); %# Add a legend
现在,你可以使面板可见和B组做隐形以下:
set([hPanelA hPanelB],{'Visible'},{'on'; 'off'});
你可以做反向(隐藏面板A和显示板B)通过这样做:
set([hPanelA hPanelB],{'Visible'},{'off'; 'on'});
你应该注意到,这两个板之间的反复与他们的两个独立的轴是快速平稳,这可能不会是如果你要擦除和重绘我的数据的情况下每当你想看一个新的情节,每一次都有一组轴。在创建GUI时创建所需的所有图形对象,然后根据需要使用SET命令修改可见性(或其他属性),可以获得更高效的GUI。
另外请注意,您仍然可以修改对象属性,即使他们是看不见的,所以(从我上面的例子继续)我可以做这样的事情:
set([hPanelA hPanelB],{'Visible'},{'on'; 'off'}); %# Hide panel B
set(hPanelB,'BackgroundColor','b'); %# Change the color of panel B
set([hPanelA hPanelB],{'Visible'},{'off'; 'on'}); %# Show panel B
现在你应该看到的是,背景颜色面板B是蓝色的。如果您还将handles保存到您的绘制线条和文本中,则可以在使它们再次可见之前使用新值更新它们。
我不确定我是否按照你的问题,但也许这是相关的:http://stackoverflow.com/questions/4008880/producing-subplots-to-then-combine-them-into-a-figure-later -matlab – Amro 2010-11-17 00:31:22
你的问题不清楚; “如果我将轴对象设置为当前轴,我无法保存绘图/数据”是什么意思?无论如何,你是否考虑保存数据本身(例如x,y对)而不是轴对象?您是否看过Matlab文档中的示例:http://www.mathworks.com/help/techdoc/creating_guis/bqz79mu.html – 2010-11-17 08:52:02