正在關注this post我有一個函數,在運行時更新4個繪圖。這可以按預期工作,除了當我去改變顯示哪個圖時,它看起來像是先前顯示的圖的殘餘物。我從bar
圖轉到surfc
,但我仍看到橫跨平面的酒吧。我目前正在設置我的數據和繪圖動態繪製多個繪圖顯示在一組軸上(一次繪製一個繪圖)
set(hplot2, 'yData', ME)
drawnow
我需要刷新軸/繪圖嗎?我使用set(plot1, 'Parent', axes1)
更改軸上的哪個繪圖。我不知道問題出在哪裏。
正在關注this post我有一個函數,在運行時更新4個繪圖。這可以按預期工作,除了當我去改變顯示哪個圖時,它看起來像是先前顯示的圖的殘餘物。我從bar
圖轉到surfc
,但我仍看到橫跨平面的酒吧。我目前正在設置我的數據和繪圖動態繪製多個繪圖顯示在一組軸上(一次繪製一個繪圖)
set(hplot2, 'yData', ME)
drawnow
我需要刷新軸/繪圖嗎?我使用set(plot1, 'Parent', axes1)
更改軸上的哪個繪圖。我不知道問題出在哪裏。
如果你兩個地塊之間的切換,你要麼要清除軸密謀使用cla
cla(axes1);
或者你會想簡單地切換現有情節對象的可見性,接下來的事情之前。
% To show only the bar plot
set(hbar, 'Visible', 'on')
set(hsurf, 'Visible', 'off')
% To show only the surf plot
set(hbar, 'Visible', 'off')
set(hsurf, 'Visible', 'on')
問題的根源,是一軸可實際持有許多地塊,因此,如果您只需創建一個新的情節和其指定爲孩子的軸,其他情節對象仍然存在。
如果您每次繪製一些東西(通過調用bar
或surfc
)創建全新的圖形對象,使用cla
將是最簡單的。也就是說,如果您可以調整代碼以簡單更新現有的繪圖對象,那麼從性能和圖形管理的角度來看,這是理想的。
另外,作爲另一方面的說明。在創建對象後,我會勸阻使用set(plot1, 'Parent', axes1)
。直接在對象構造函數中指定Parent
屬性更加健壯。通過這種方式,您可以確保將其直接添加到所需的軸。
plot1 = bar(data, 'Parent', axes1);
編輯
現在,我想它,因爲你的3D和2D數據之間切換,它可以更容易簡單地在同一位置軸(一個用於bar
,另一個用於surf
)。然後,您可以根據需要切換軸的可見性。這樣,您的所有視圖設置都將保留給定的軸。
barax = axes();
surfax = axes();
% Ensure they are located at the same position
link = linkprop([barax, surfax], 'Position');
hbar = bar(data, 'Parent', barax);
hsurf = surfc(data, 'Parent', surfax);
% Toggle these to switch plots.
set(barax, 'Visible', 'off')
set(surfax, 'Visible', 'on')