2010-08-18 7 views
5

J'essaye de mettre en application une version modifiée de datetick2 du MATLAB FEX. Lorsque les parcelles sont agrandies sur une petite plage de dates, le jour/mois/année, etc. n'est pas affiché, en fonction de la plage de temps dans la parcelle. Je voudrais mettre une date de début formatée 'jj-mmm-aaaa' comme une annotation dans le coin inférieur gauche de la figure. Pas de problème, c'est fait.Comment trouver une poignée d'annotation dans MATLAB?

Cependant, je veux maintenant le mettre à jour si l'utilisateur sélectionne une plage de dates différente avec la fonction de zoom. Au lieu de passer plus de poignées, je veux juste trouver l'annotation. Cependant, findobj ne semble pas fonctionner pour le type hggroup, qui correspond aux annotations. Est-ce que je l'utilise mal?

Voici un exemple de code:

>> 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 

Comme vous pouvez le voir, findobj ne fonctionne pas, mais si j'utilise la poignée I définie dans l'espace de travail, le type pops droit comme hggroup.

Répondre

5

Vous pouvez avoir d'abord définir la racine 'ShowHiddenHandles' property à 'on', essayez d'utiliser FINDOBJ pour trouver votre objet, puis il remis à la valeur par défaut 'off'.

+1

Ouais, c'était ça. J'ai ajouté une propriété d'étiquette à l'annotation, juste pour rendre les choses encore plus faciles. – Doresoom

9

Au lieu de findobj, j'utilise FINDALL, car il me permet de garder les poignées cachées cachées. findall a besoin d'un handle à partir duquel il recherche récursivement les enfants. Findall (gcf, 'Tag', 'myTag') trouve les objets marqués myTag qui sont associés à la figure en cours (y compris la figure elle-même, dans le cas où elle a la bonne balise).

+1

+1: Je ne pense pas avoir déjà entendu parler de FINDALL! – gnovice

+0

+1 C'est aussi un nouveau pour moi. – Doresoom

Questions connexes