Matlab:如何获取图形句柄中的所有轴手柄?

YYC*_*YYC 36 matlab axes figure

如何获得图形手柄中的所有轴手柄?

给定数字句柄hf,我发现get(hf, 'children')可能会返回所有轴的句柄.但是,Matlab帮助建议它可能返回的不仅仅是轴句柄:

这个数字的孩子.包含所有轴的手柄的矢量,图中显示的用户界面对象.您可以更改手柄的顺序,从而更改显示屏上对象的堆叠.

有没有办法只获得图形手柄中的轴柄?或者我怎么知道返回的get(hf, 'children')句柄是否是一个斧柄?

谢谢!

Jon*_*nas 40

使用FINDALL:

allAxesInFigure = findall(figureHandle,'type','axes');
Run Code Online (Sandbox Code Playgroud)

如果您想在Matlab中的任何位置获取所有轴控制柄,您可以执行以下操作:

allAxes = findall(0,'type','axes');
Run Code Online (Sandbox Code Playgroud)

编辑

要回答问题的第二部分:您可以通过获取handles type属性来测试句柄列表是否为轴:

isAxes = strcmp('axes',get(listOfHandles,'type'));
Run Code Online (Sandbox Code Playgroud)

isAxes对于每个类型的句柄都是如此axes.

EDIT2

要仅选择非图例的轴手柄,您需要清除轴列表(ax通过删除标签不是的所有手柄'legend'或手柄'Colorbar':

axNoLegendsOrColorbars= ax(~ismember(get(ax,'Tag'),{'legend','Colobar'}))
Run Code Online (Sandbox Code Playgroud)

  • 所以最后`findall(figureHandle,'type','axes','tag','')`是最短的方式. (2认同)