determining number of axes on a figure

how can I determine the number of axes that a figure has?
using get(figure,'Children') works but also gives data on non-axis children, which I don't want

Respuestas (2)

Walter Roberson
Walter Roberson el 10 de Abr. de 2012
Do you only want axes that are immediate children, or do you want all axes, even those that might be several objects down (such as within uipanel) ? And how about if the handles are hidden, do you want them returned or not?
Immediate children only:
findobj( get(gcf,'Children'), '-depth', 1, 'type', 'axes')
All children (including hidden) at all levels:
findall(gcf, 'type', 'axes')

5 comentarios

Daniel Shub
Daniel Shub el 10 de Abr. de 2012
I much better answer than mine. A little text goes a long way.
Art
Art el 10 de Abr. de 2012
Thanks, this is close, but on the figures I have this always gives me one more handle than I expect.
Is it also returning a handle to the legend perhaps? what other "axes" possible (1 layer deep) are there on a figure?
Daniel Shub
Daniel Shub el 10 de Abr. de 2012
Both legends and colorbars are axes. There maybe other things that show up as axes. You can eliminate them on a case by case basis ...
findobj(gcf, 'type', 'axes', '-not', 'tag', 'legend', '-not', 'tag', 'Colorbar')
Art
Art el 11 de Abr. de 2012
that works - thanks
Massimo Ciacci
Massimo Ciacci el 16 de Nov. de 2021
Awesome tip, didn't know about '-depth'. Works a charm.

Iniciar sesión para comentar.

Categorías

Más información sobre Creating, Deleting, and Querying Graphics Objects en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

Art
el 10 de Abr. de 2012

Comentada:

el 16 de Nov. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by