Deleting circles drawn using viscircles

조회 수: 16 (최근 30일)
Vance Blake
Vance Blake 2019년 8월 19일
댓글: Vance Blake 2019년 9월 13일
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
Adam
Adam 2019년 8월 19일
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 2019년 8월 19일
편집: Vance Blake 2019년 8월 19일
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);

댓글을 달려면 로그인하십시오.

채택된 답변

Adam Danz
Adam Danz 2019년 8월 19일
편집: Adam Danz 2019년 8월 20일
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
Adam Danz
Adam Danz 2019년 9월 13일
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?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by