在Enthought的Chaco中,TimeFormatter
类用于格式化tick的时间字符串
标签。有没有办法指定时间格式(类似time.strftime()
)。
源代码现在将显示月份和日期的格式硬编码为美式(MMDD)。我想添加一些灵活性,以便时间/日期格式提示以某种方式传递给TimeFormatter
我不知道有什么好办法(除了更改源代码本身(TimeFormatter._formats
字典))
答案 0 :(得分:4)
老实说,最简单的方法是monkeypatch TimeFormatter的_formats字典:
from enthought.chaco.scales.formatters import TimeFormatter
TimeFormatter._formats['days'] = ('%d/%m', '%d%a',)
如果您不想这样做,那么您需要继承TimeFormatter。这很简单。更麻烦的是,使chaco.scales包创建的所有现有比例系统都使用新的子类而不是内置的TimeFormatter。如果查看scales.time_scale.TimeScale,它会在构造函数中接受'formatter'关键字参数。因此,在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时,您需要将这些比例传递给ScaleSystem:
euro_scale_system = CalendarScaleSystem(*(HMSScales + EuroMDYScales))
tick_gen = ScalesTickGenerator(scale=euro_scale_system)
然后你可以创建轴,给它这个tick生成器:
axis = PlotAxis(tick_generator = tick_gen)
HTH,对不起,这大约是一个月的滞后。我并没有真正检查StackOverflow。如果您有其他chaco问题,我建议您注册chaco-users邮件列表......