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

5 visualizaciones (últimos 30 días)
Albert Bing
Albert Bing el 21 de Nov. de 2020
Editada: Mario Malic el 21 de Nov. de 2020
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 comentarios
Albert Bing
Albert Bing el 21 de Nov. de 2020
Editada: Albert Bing el 21 de Nov. de 2020
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 el 21 de Nov. de 2020
Editada: Mario Malic el 21 de Nov. de 2020
You can also do it that way, or with hold.

Iniciar sesión para comentar.

Respuesta aceptada

Mario Malic
Mario Malic el 21 de Nov. de 2020
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 comentario
Albert Bing
Albert Bing el 21 de Nov. de 2020
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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Specifying Target for Graphics Output en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by