2017-10-04 79 views
0

如何避免MATLAB彈出帶有兩個軸的GUI圖形f,同時在循環內繪製數據。 下面是一個簡單的例子:避免在MATLAB中連續彈出圖形

f=figure; 

ax.h1 = axes('Parent',f,'Position',[0.1 0.1 0.8 0.35],'Units','normalized'); 
ax.h2 = axes('Parent',f,'Position',[0.1 0.6 0.8 0.35],'Units','normalized'); 

for j=1:20 
    axes(ax.h1) 
    hold on 
    plot(1:3,(1:3)+j) 

    axes(ax.h2) 
    hold on 
    plot(1:3,(1:3)+1+j) 

    pause(2) 

end 

我需要保持數據繪製了幾個小時。所以,如果每次產生一個新的plot時都不會彈出MATLAB,那將會很棒。

謝謝!

+2

使圖中看不見的。但是,一個更好的方法是存儲數據,然後一氣呵成畫出它的一切準備好後。 –

+2

我可能是錯的,但我相信你讓他們「彈出」的原因是因爲你稱之爲「軸」命令,它具有作爲副作用的特定軸將顯示並展現在最前面。如果您只想「繪製」該軸,您可以直接使用'plot'命令,即plot(ax.h1,bla bla bla')。 –

+0

@ Dev-iL。這是一個GUI圖,帶有一些按鈕。所以我想繼續尋找數據。如果我將圖形隱藏起來,我的圖形用戶界面將不可見,並且不會發生。如果我在不繪製的情況下保存數據,我無法跟蹤發生了什麼。 – hello123

回答

2

正如@TasosPapastylianou指出的那樣,axis調用將窗口置於前面。刪除循環內的axishold on調用,並使用plot(ax.h1, ...繪製到特定座標軸。您只需要爲每個軸調用hold on一次,因此在開始時使用hold(ax.h1, 'on')等進行此操作。然後,您的圖應該在後臺繼續更新,而不必每次都進入前臺。

你舉的例子就變成:

f=figure; 

ax.h1 = axes('Parent',f,'Position',[0.1 0.1 0.8 0.35],'Units','normalized'); 
ax.h2 = axes('Parent',f,'Position',[0.1 0.6 0.8 0.35],'Units','normalized'); 
hold(ax.h1, 'on') 
hold(ax.h2, 'on') 

for j=1:20 
    plot(ax.h1, 1:3,(1:3)+j) 
    plot(ax.h2, 1:3,(1:3)+1+j) 

    pause(2) 

end