2010-08-18 18 views
5

Ich versuche eine modifizierte Version von datetick2 von der MATLAB FEX zu implementieren. Wenn Plots in einem kleinen Datumsbereich gezoomt werden, wird der Tag/Monat/Jahr usw. nicht angezeigt, je nach dem Bereich der Zeiten in der Zeichnung. Ich möchte ein 'dd-mmm-yyyy' formatiertes Startdatum als Anmerkung in die untere linke Ecke der Figur setzen. Kein Problem, das ist erledigt.Wie finde ich ein Anmerkungshandle in MATLAB?

Als nächstes möchte ich es aktualisieren, wenn der Benutzer einen anderen Datumsbereich mit der Zoom-Funktion auswählt. Anstatt mehr Handles zu übergeben, möchte ich nur die Annotation finden. findobj scheint jedoch nicht für den hggroup-Typ zu funktionieren, unter dem die Anmerkungen fallen. Benutze ich es falsch?

Hier ist ein Codebeispiel:

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

Wie Sie sehen können, ist findobj nicht funktioniert, aber wenn ich den Griff ich im Arbeitsbereich definiert verwenden, erscheint der Typ direkt aus als hggroup.

Antwort

5

Sie haben zu setzen zuerst die Wurzel 'ShowHiddenHandles' property zu 'on', dann versuchen FINDOBJ mit Ihrem Objekt zu finden, setzen Sie ihn dann wieder auf den Standard 'off'.

+1

Yup, das war es. Ich habe der Anmerkung auch eine Tag-Eigenschaft hinzugefügt, um die Dinge noch einfacher zu machen. – Doresoom

9

Anstelle von findobj verwende ich FINDALL, da es mir ermöglicht versteckte Griffe versteckt zu halten. findall benötigt ein Handle, von dem ausgehend die Kinder rekursiv gesucht werden. findall(0,'Tag','myTag') finds all objects tagged myTag (0 is the handle to root), Suche (gcf, 'Tag', 'myTag') findet die markierten Objekte myTag, die der aktuellen Figur zugeordnet sind (einschließlich der Figur selbst, falls sie das richtige Tag hat).

+1

+1: Ich glaube nicht, dass ich jemals von FINDALL gehört habe! – gnovice

+0

+1 Das ist ein neues für mich auch. – Doresoom

Verwandte Themen