从MATLAB图中移除点和线

4
我有一个图表,用户可以进行点击。点击的坐标将存储在两个向量x和y中。然后,我通过plot(x_new, y_new)绘制新创建的点,并为该点创建了一个上下文菜单,标签为删除点。当点击它时,我只需删除xy向量的相应值。
现在,我需要以某种方式删除绘制的点。目前我是这样做的:当删除点时,我只需清除当前轴cla并一次性重新绘制所有点。但我感觉这不是最好的方法,因为我也想在用户输入时显示文本和一些点之间的连接线,每次都需要重新绘制所有内容可能会很慢...
所以我想知道什么是最好的方法?是否应该为每个点简单地存储返回的绘图句柄,然后在删除点时删除这些对象?连接线和文本也是如此吗?
谢谢!
2个回答

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”,但我不喜欢它,因为它速度较慢且会产生丑陋的代码。 因此,我对@Nzbuu的解决方案投+1赞成票,但如果有人感兴趣,我加上这个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接