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

Antworten (2)

Walter Roberson
Walter Roberson am 10 Apr. 2012

4 Stimmen

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 Kommentare

Daniel Shub
Daniel Shub am 10 Apr. 2012
I much better answer than mine. A little text goes a long way.
Art
Art am 10 Apr. 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 am 10 Apr. 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 am 11 Apr. 2012
that works - thanks
Massimo Ciacci
Massimo Ciacci am 16 Nov. 2021
Awesome tip, didn't know about '-depth'. Works a charm.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Hilfe-Center und File Exchange

Gefragt:

Art
am 10 Apr. 2012

Kommentiert:

am 16 Nov. 2021

Community Treasure Hunt

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

Start Hunting!

Translated by