2011-12-20 614 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解决方案,但是如果它感兴趣的话我加了这个