Python Chaco оси этикетки времени форматирование времени

StackOverflow https://stackoverflow.com/questions/2173632

  •  24-09-2019
  •  | 
  •  

Вопрос

В чако, TimeFormatter Класс используется для форматирования временной строки клещей этикетки. Есть ли способ указать формат времени (что-то вроде time.strftime()).

Исходный код теперь жестко кодирует формат при отображении месяца и дня месяца в американский стиль (MMDD). Я хотел бы добавить некоторую гибкость, чтобы оттуды формата времени / даты каким-то образом будут переданы TimeFormatter

Я не знаю никого хорошего способа сделать это (кроме изменения самого исходного кодаTimeFormatter._formats Словарь))

Это было полезно?

Решение

Честно говоря, самый простой способ будет обезболивающим словарь _Formats _ _Formats:

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

Если вы не хотите делать это, то вам нужно подкласс TimeFormatter. Это просто. Что более громоблокирует все существующие масштабные системы, которые пакет Chaco.Scales создает, используйте ваш новый подкласс, а не встроенный TimeFormatter. Если вы посмотрите на SCALES.Time_scale.timescale, он принимает аргумент ключевого слова «Fixter» в конструкторе. Итак, в нижней части Time_scale.py, когда построен список MDyscales, вам придется создать свой собственный:

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

Затем, когда вы создаете ScalestickGenerator, вам нужно пройти в этих масштабах к масштабам:

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

Тогда вы можете создать ось, давая ему этот галочку генератора:

axis = PlotAxis(tick_generator = tick_gen)

Х-е, извините, это около месяца отставать. Я не очень проверяю стопку Stackoverflow. Если у вас есть другие вопросы Chaco, я бы порекомендовал подписаться в список рассылки Chaco-пользователей ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top