Удаление точек и линий из сюжета MATLAB - PullRequest
4 голосов
/ 20 декабря 2011

У меня есть фигура, на которую пользователь может кликнуть.Координаты клика будут сохранены в двух векторах x и y.Затем я строю новую точку с помощью plot(x_new, y_new), и для этой точки создается контекст, который имеет метку delete point. При нажатии на нее я просто удаляю соответствующие значения x и * 1004.* vectors.

Теперь мне нужно как-то удалить нанесенную точку.В настоящее время я делаю это следующим образом: при удалении точек я просто очищаю текущие оси cla и перерисовываю все точки одновременно.Но почему-то я чувствую, что это не лучший метод, так как я хочу также отображать текст и некоторые линии соединения между точками ввода пользователя, и это может стать довольно медленным, когда все вещи нужно перерисовывать каждый раз ...

Так что мне интересно, как лучше это сделать?Было бы хорошо просто сохранить возвращаемые дескрипторы сюжета для каждой точки и затем удалить эти объекты при удалении точки?То же самое для линий связи и текстов?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 20 декабря 2011

Вы можете манипулировать базовыми данными строки напрямую, используя свойства XData и YData.

Для удаления точки по индексу idx:

XData = get(h_line, 'XData');
YData = get(h_line, 'YData');
XData(idx) = [];
YData(idx) = [];
set(h_line, 'XData', XData, 'YData', YData);
1 голос
/ 20 декабря 2011

Существует также другая опция, использующая «refreshdata», но мне она не нравится, потому что она намного медленнее и создает некрасивый код. Поэтому я голосую +1 за решение @Nzbuu, но добавляю, если оно кого-то интересует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...