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

5
我正在尝试实现一个修改版的datetick2,它来自于MATLAB FEX。当图表缩放到一个较小的日期范围时,根据图表中时间的范围,可能不会显示日/月/年等信息。我想在图表左下角添加一个“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

正如您所看到的,findobj 不起作用,但如果我使用在工作区定义的句柄,类型就会直接显示为 hggroup

2个回答

9

我使用FINDALL而不是findobj,因为它可以让我保持隐藏的句柄隐藏。 findall需要一个句柄,从这个句柄开始递归搜索子元素。findall(0,'Tag','myTag')查找所有以标记为myTag的对象(0是根句柄),findall(gcf,'Tag','myTag')查找与当前图形相关联且标记为myTag的对象(包括图形本身,如果它有正确的标记)。


5

1
没错,就是这样。我还给注释添加了一个标签属性,以使事情变得更加容易。 - Doresoom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接