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