从MATLAB绘图中删除点和线

从MATLAB绘图中删除点和线,matlab,plot,line,handle,Matlab,Plot,Line,Handle,我有一个用户可以点击进入的图形。点击的坐标将存储在两个向量x和y中。然后我通过plot(x\u new,y\u new)绘制新创建的点,并且为该点创建了一个上下文菜单,其中有一个标签delete point。单击它时,我只需删除x和y向量的相应值 现在我需要以某种方式删除绘制的点。目前我是这样做的:删除点时,我只需清除当前轴cla,然后立即重新绘制所有点。但不知何故,我觉得这不是最好的方法,因为我还想显示文本和用户输入点之间的一些连接线,当每次都需要重新绘制所有内容时,它可能会变得非常慢 所以我

我有一个用户可以点击进入的图形。点击的坐标将存储在两个向量x和y中。然后我通过
plot(x\u new,y\u new)
绘制新创建的点,并且为该点创建了一个上下文菜单,其中有一个标签
delete point
。单击它时,我只需删除
x
y
向量的相应值

现在我需要以某种方式删除绘制的点。目前我是这样做的:删除点时,我只需清除当前轴
cla
,然后立即重新绘制所有点。但不知何故,我觉得这不是最好的方法,因为我还想显示文本和用户输入点之间的一些连接线,当每次都需要重新绘制所有内容时,它可能会变得非常慢

所以我想知道最好的方法是什么? 简单地存储每个点的返回打印句柄,然后在删除该点时删除这些对象,这是否好?连接线和文本是否相同


谢谢

您可以使用
XData
YData
属性直接操作行的基础数据

要删除索引idx处的点,请执行以下操作:

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

还有另一种选择,使用“refreshdata”,但我不喜欢它,因为它速度慢得多,而且会生成难看的代码。 所以我投票给@Nzbuu解决方案+1,但如果有人感兴趣,我会加上这个