我在這裏猜測,但它聽起來像你想要創建一個軸顯示不同的情節,傳說等基於下拉菜單中的哪一項被選中的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