python eje chaco tags formato de hora

En el Chaco de Enthought, la clase TimeFormatter se usa para formatear la cadena de tiempo de las tags de tic. hay una manera de especificar el formato de hora (algo como time.strftime() ).

el código fuente ahora codifica el formato al mostrar el mes y el día del mes al estilo americano (MMDD). Me gustaría agregar algo de flexibilidad para que las sugerencias de formato de fecha / hora se pasen de alguna manera al TimeFormatter

No conozco ninguna forma agradable de hacer esto (aparte de cambiar el código fuente en sí (diccionario TimeFormatter._formats ))

Honestamente, la forma más fácil es utilizar el diccionario de formatos de fecha de TimeFormatter:

 from enthought.chaco.scales.formatters import TimeFormatter TimeFormatter._formats['days'] = ('%d/%m', '%d%a',) 

Si no desea hacer esto, entonces necesita subclasificar TimeFormatter. Eso es fácil. Lo que es más incómodo es hacer que todos los sistemas de escala existentes que crea el paquete chaco.scales utilicen su nueva subclase en lugar del TimeFormatter incorporado. Si miras a scales.time_scale.TimeScale, acepta un argumento de palabra clave ‘formateador’ en el constructor. Entonces, en la parte inferior de time_scale.py, cuando se construye la lista MDYScales, tendrías que crear el tuyo:

 EuroMDYScales = [TimeScale(day_of_month=range(1,31,3), formatter=MyFormatter()), TimeScale(day_of_month=(1,8,15,22), formatter=MyFormatter()), TimeScale(day_of_month=(1,15), formatter=MyFormatter()), TimeScale(month_of_year=range(1,13), formatter=MyFormatter()), TimeScale(month_of_year=range(1,13,3), formatter=MyFormatter()), TimeScale(month_of_year=(1,7), formatter=MyFormatter()), TimeScale(month_of_year=(1,), formatter=MyFormatter())] 

Luego, cuando crea el ScalesTickGenerator, necesita pasar estas escalas al ScaleSystem:

 euro_scale_system = CalendarScaleSystem(*(HMSScales + EuroMDYScales)) tick_gen = ScalesTickGenerator(scale=euro_scale_system) 

Luego puedes crear el eje, dándole este generador de ticks:

 axis = PlotAxis(tick_generator = tick_gen) 

HTH, lo siento, esto es alrededor de un mes de retraso. Realmente no reviso mucho StackOverflow. Si tiene otras preguntas sobre el chaco, le recomiendo que se registre en la lista de correo de usuarios de chaco …