MATLAB: Hide all elements of an axis

axesguiMATLAB

I have two axes objects in a figure and I'd like to switch back and forth between them by hiding the appropriate object. There is a figure.plots(i) variable which stores the axes handles. When I try using
toHide = allchild(figure.plots(i));
set(toHide,'visible','off');
set(figure.plots(i),'visible','off');
the axis legend of the plot I'm trying to hide stays visible. Is there a way for me to switch the legend off without shifting focus of the axes using axes(h)? I'm trying to expand this to a GUI which can handle many axes and I know the axes(h) command can be slow.

Best Answer

In MATLAB R2015a, Legends are children of the figure, not the axes. For example, I expect you will be able to find the legend with
get(gcf,'Children')
% or
findall(gcf,'Type','Legend')
If the situation permits, you would do better to save the legend object when you create the legend in the first place. Whatever you choose, you can hide it using the same set(h,'Visible','off') that you are using already.
In case it is helpful, it seems that findall returns the legends in order from newest to oldest (reverse the order they were created).