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

9 views (last 30 days)
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?
Mario Malic
Mario Malic on 21 Nov 2020
Edited: Mario Malic on 21 Nov 2020
You can also do it that way, or with hold.

Sign in to comment.

Accepted Answer

Mario Malic
Mario Malic on 21 Nov 2020
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 Comment
Albert Bing
Albert Bing on 21 Nov 2020
I checked my other code, turned out the axes was used as axes(fig, 'NextPlot', 'add').
So I guess imshow is not so different.

Sign in to comment.

More Answers (0)


Find more on Specifying Target for Graphics Output in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by