如何在MATLAB中找到注释句柄?

Dor*_*oom 5 matlab object handle

我正在尝试从MATLAB FEX 实现datetick2的修改版本.当绘图在较小的日期范围内放大时,日期/月/年等不会显示,具体取决于绘图中的时间范围.我想在图的左下角放置一个'dd-mmm-yyyy'格式的开始日期作为注释.没问题,已经完成了.

但是,如果用户使用缩放功能选择不同的日期范围,接下来我想让它更新.我想要找到注释,而不是传递更多的句柄.然而,findobj似乎不适用于hggroup类型,这是注释的范畴.我用错了吗?

这是一个代码示例:

>> times=now-[50:-5:0];
>> days=times-times(1);
>> plot(times,days)
>> datetick2()
>> xlabel('Date')
>> ylabel('Days')
>> title('Example')
>> initialdate=datestr(min(get(gca,'xlim')),'dd-mmm-yyyy');
>> txt=annotation('textbox', [.01,.01,.1,.05],...
                  'string',  initialdate,...
                  'Linestyle','none');
>> 
>> 
>> findobj('type','hggroup')

ans =

   Empty matrix: 0-by-1

>> get(txt,'type')

ans =

hggroup

>> findobj('type','axes')

ans =

  270.0034
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,findobj不起作用,但如果我使用我在工作区中定义的句柄,则该类型会弹出hggroup.

Jon*_*nas 9

而不是findobj,我使用FINDALL,因为它允许我隐藏隐藏的句柄.findall需要一个句柄,从它开始递归搜索孩子.findall(0,'Tag','myTag') finds all objects taggedmyTag (0 is the handle to root),findall(gcf,'Tag','myTag')找到标记的myTag与当前图形相关联的对象(包括图形本身,以防它具有正确的标记).


gno*_*ice 5

您可能必须先将root 'ShowHiddenHandles'属性设置为'on',然后尝试使用FINDOBJ查找对象,然后将其设置回默认值'off'.