2010-08-18 14 views
5

Estoy tratando de implementar una versión modificada de datetick2 desde el MATLAB FEX. Cuando las representaciones se acercan con un pequeño intervalo de fechas, el día/mes/año, etc. no se muestra, dependiendo del rango de veces en la trama. Me gustaría poner una fecha de inicio formateada 'dd-mmm-aaaa' como una anotación en la esquina inferior izquierda de la figura. No hay problema, eso está hecho.¿Cómo puedo encontrar un controlador de anotación en MATLAB?

Sin embargo, a continuación quiero actualizarlo si el usuario selecciona un rango de fechas diferente con la función de zoom. En lugar de pasar más identificadores, solo quiero encontrar la anotación. Sin embargo, findobj no parece funcionar para el tipo hggroup, que es a lo que pertenecen las anotaciones. ¿Lo estoy usando mal?

Aquí está un ejemplo de código:

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

Como se puede ver, findobj no funciona, pero si uso el mango I definida en el espacio de trabajo, el tipo estallar a la derecha como hggroup.

Respuesta

5

Es posible que tenga que establecer primero la raíz 'ShowHiddenHandles' property a 'on', a continuación, tratar de usar FINDOBJ para encontrar su objeto, luego otra vez a la configuración predeterminada 'off'.

+1

Sí, eso fue todo. Agregué una propiedad de etiqueta a la anotación también, solo para facilitar aún más las cosas. – Doresoom

9

En lugar de findobj, utilizo FINDALL, ya que me permite mantener escondidos los mangos ocultos. findall necesita un identificador a partir del cual busca de manera recursiva a los niños. findall(0,'Tag','myTag') finds all objects tagged myTag (0 is the handle to root), findall (gcf, 'Tag', 'myTag') encuentra los objetos etiquetados myTag que están asociados con la figura actual (incluida la figura misma, en caso de que tenga la etiqueta correcta).

+1

+1: ¡No creo haber oído hablar de FINDALL! – gnovice

+0

+1 Esa es una nueva para mí también. – Doresoom

Cuestiones relacionadas