Pregunta

Chaco En Enthought, la clase TimeFormatter se utiliza para dar formato a la cadena de tiempo de la garrapata etiquetas. ¿hay una forma de especificar el formato de hora (algo así como time.strftime()).

el código fuente ahora códigos duros el formato cuando se muestra el mes y el día del mes a la americana (MMDD). Me gustaría añadir un poco de flexibilidad para que los consejos de formato de hora / fecha de alguna manera se pasarían a la TimeFormatter

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

¿Fue útil?

Solución

En serio, la forma más fácil va a ser para monkeypatch _formats del TimeFormatter diccionario:

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

Si no quieres hacer esto, entonces usted necesita para subclase TimeFormatter. Eso es fácil. Lo que es más complicado es hacer todos los sistemas existentes, que crea el paquete chaco.scales utilizar su nueva subclase en lugar de la incorporada en el TimeFormatter. Si nos fijamos en scales.time_scale.TimeScale, que acepta un argumento de palabra clave 'formateador' en el constructor. Así, en la parte inferior de time_scale.py, cuando la lista MDYScales está construido, habría que crear su propia:

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())]

A continuación, cuando se crea la ScalesTickGenerator, se necesita pasar en estas escalas a la ScaleSystem:

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

A continuación, puede crear el eje, lo que le da este generador de señal:

axis = PlotAxis(tick_generator = tick_gen)

HTH, lo siento esto se trata de un retraso de meses. Realmente no verifico Stackoverflow mucho. Si usted tiene otras preguntas chaco, te recomiendo registrarse en el Chaco lista de distribución ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top