2010-08-18 4 views
5

Я пытаюсь реализовать модифицированную версию datetick2 от FAT MATLAB. Когда графики приближаются к небольшому диапазону дат, день/месяц/год и т. Д. Не отображаются в зависимости от диапазона времени на графике. Я хотел бы указать дату начала работы 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

Вы, возможно, придется сначала установить корень 'ShowHiddenHandles' property в 'on', а затем попробуйте использовать FINDOBJ найти свой объект, а затем установить его обратно по умолчанию 'off'.

+1

Yup, все. Я добавил свойство тега в аннотацию, просто чтобы сделать вещи еще проще. – Doresoom

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

+0

+1 Это тоже для меня тоже. – Doresoom

Смежные вопросы