Как мне найти дескриптор аннотации в MATLAB? - PullRequest
5 голосов
/ 19 августа 2010

Я пытаюсь реализовать модифицированную версию 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 голосов
/ 19 августа 2010

Вместо findobj я использую FINDALL , поскольку это позволяет мне скрывать скрытые ручки. findall нужен дескриптор, начиная с которого он рекурсивно ищет детей. findall(0,'Tag','myTag') finds all objects tagged myTag (0 is the handle to root), findall (gcf, 'Tag', 'myTag') находит объекты с тегом myTag, которые связаны с текущим рисунком (включая саму фигуру, если у нее есть правильный тег).

5 голосов
/ 19 августа 2010

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

...