2010-08-18 53 views
5

我试图从MATLAB FEX实现datetick2的修改版本。当地块在较短的日期范围内放大时,日/月/年等不显示,这取决于地块中的时间范围。我想在图的左下角放一个'dd-mmm-yyyy'格式的开始日期作为注释。没问题,完成了。如何在MATLAB中找到注释句柄?

但是,如果用户使用缩放功能选择不同的日期范围,我想要更新它。我不想传递更多的句柄,而只想找到注释。但是,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

回答

5

您可能需要先设置root 'ShowHiddenHandles' property'on',然后尝试使用FINDOBJ找到你的对象,然后将其设置回默认'off'

+1

是的,就是这样。我还为注释添加了标签属性,只是为了让事情变得更简单。 – Doresoom 2010-08-18 22:03:11

9

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

+1

+1:我不认为我听说过FINDALL! – gnovice 2010-08-19 02:59:44

+0

+1这对我来说也是新的。 – Doresoom 2010-08-19 13:41:55