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

8 次查看(过去 30 天)
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
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