2011-12-20 2835 views
4

我有一個用戶可以點擊進入的圖。點擊的座標將存儲在兩個向量x和y中。我通過plot(x_new, y_new)繪製了新創建的點,並且還創建了一個上下文me nu,該點的標記爲delete point。單擊它時,我只需刪除xy向量的相應值。從MATLAB繪圖中刪除點和線

現在我需要以某種方式刪除繪製的點。目前我這樣做:刪除點時,我只需清除當前軸cla並一次重繪所有點。但不知何故,我覺得這不是最好的方法,因爲我想在用戶輸入點之間顯示文本和點之間的一些連接線,當所有的東西需要重新繪製時,它可能會變得很慢...

所以我想知道最好的方法是什麼? 簡單地存儲每個點的返回繪圖句柄並刪除這些點時刪除這些對象會不好?連接線和文本相同?

謝謝!

回答

5

您可以直接使用XDataYData屬性來操縱行的基礎數據。

要在索引idx刪除點:

XData = get(h_line, 'XData'); 
YData = get(h_line, 'YData'); 
XData(idx) = []; 
YData(idx) = []; 
set(h_line, 'XData', XData, 'YData', YData); 
1

還有另一種選擇,使用「refreshdata」,但我不喜歡它,因爲它是慢得多,產生醜陋的代碼。 所以我投票+1到@Nzbuu解決方案,但是如果它感興趣的話我加了這個