Deleting circles drawn using viscircles

5 visualizaciones (últimos 30 días)
Vance Blake
Vance Blake el 19 de Ag. de 2019
Comentada: Vance Blake el 13 de Sept. de 2019
Hello, I am trying to delete a group of circles drawn on my plot using viscircles. I have saved the group to a handle, but when I try to execute the delete(handle) command the circles still remain. I am using 'hold on' to continuously update the same figure could that be interfering? The points that the circles surround are removed when I delete their handle. below is a picture of before and after I run the delete(handle) commands. Would usign data linking/sourcing be a better option?? Would showing the updates via a new subplot window also work ??
Before:
After:
  2 comentarios
Adam
Adam el 19 de Ag. de 2019
Deleting handles returned from viscircles works fine when I try it, but I don't know how you are using it specifically.
Vance Blake
Vance Blake el 19 de Ag. de 2019
Editada: Vance Blake el 19 de Ag. de 2019
I am using viscircles to place circles around the points on the plot. I have all the circles saved to a handle called CTR_circles1 but when i delete CTR_circles1 the circles don't disappear. the relevant parts of the code are shown below. I do this task many more times thorughout the code but for the initial time I want to use it, it doesn't work.
% plots circles centered around the randomly generated points
for i = 1:n
radii_node = 4;
centers_node = [x(i), y(i)];
CTR_circles1 = viscircles(centers_node, radii_node, 'color', 'r');
hold on
end
%%
delete(CTR_circles1);

Iniciar sesión para comentar.

Respuesta aceptada

Adam Danz
Adam Danz el 19 de Ag. de 2019
Editada: Adam Danz el 20 de Ag. de 2019
The handles are being overwritten on each iteration of the i-loop so at the end of the loop, you only have access to the last drawn cirlcle(s).
Instead,
% plots circles centered around the randomly generated points
CTR_circles1 = gobjects(1,n); % or (n,1)
hold on
for i = 1:n
radii_node = 4;
centers_node = [x(i), y(i)];
CTR_circles1(i) = viscircles(centers_node, radii_node, 'color', 'r');
end
%%
delete(CTR_circles1);
Or better yet, use input matrices to avoid the loop.
centers_node = [x(:), y(:)];
radii_node = 4 * ones(size(centers_node,1),1);
CTR_circles1 = viscircles(centers_node, radii_node, 'color', 'r');
  24 comentarios
Adam Danz
Adam Danz el 13 de Sept. de 2019
How about we start a new question since we've diverged a bit from the original topic which may make the thread difficult to follow?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by