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

Answers (2)

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 Comments

I much better answer than mine. A little text goes a long way.
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?
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')
that works - thanks
Awesome tip, didn't know about '-depth'. Works a charm.

Sign in to comment.

Categories

Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange

Asked:

Art
on 10 Apr 2012

Commented:

on 16 Nov 2021

Community Treasure Hunt

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

Start Hunting!