Does `imshow` just delete all other objects in the axes?

조회 수: 9 (최근 30일)
Albert Bing
Albert Bing 2020년 11월 21일
편집: Mario Malic 2020년 11월 21일
It seems that imshow just deletes all other objects or handles in the parenting axes. Say I have a script like this
fig = figure;
ax = axes(fig);
text(ax, 0.5, 0.5, 'string');
h0 = findobj(ax, 'Type', 'text');
img = randn(128, 128);
imshow(img); % why is `imshow(ax, img)` illegal?
h = findobj(ax, 'Type', 'text');
h0 is a 1x1 text, but h is empty!
Another wierd behaviour of imshow is that you cannot set the axes in the imshow command, i.e. imshow(ax, img) is not allowed.
Why is imshow so different?
  댓글 수: 2
Albert Bing
Albert Bing 2020년 11월 21일
편집: Albert Bing 2020년 11월 21일
Sorry it was my carelessness. The point is the 'NextPlot' property of the axes. The default value is 'replace'. So to make the previous defined handles kept, it should be changed to 'add'.
Mario Malic
Mario Malic 2020년 11월 21일
편집: Mario Malic 2020년 11월 21일
You can also do it that way, or with hold.

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

채택된 답변

Mario Malic
Mario Malic 2020년 11월 21일
Hello,
To use hold on with handles to axes, this works.
hold(ax, 'on');
To assign image to axes with imshow
imshow(img, 'Parent', ax)
  댓글 수: 1
Albert Bing
Albert Bing 2020년 11월 21일
Thanks
I checked my other code, turned out the axes was used as axes(fig, 'NextPlot', 'add').
So I guess imshow is not so different.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Graphics Object Properties에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by