首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python chaco轴标签时间格式

python chaco轴标签时间格式
EN

Stack Overflow用户
提问于 2010-02-01 06:26:06
回答 1查看 865关注 0票数 5

在Enthought中,TimeFormatter类用于格式化刻度标签的时间字符串。有没有办法指定时间格式(类似于time.strftime())。

现在,源代码在将月份和日期显示为美国风格(MMDD)时对格式进行了硬编码。我想增加一些灵活性,以便以某种方式将时间/日期格式提示传递给TimeFormatter

我不知道有什么好的方法(除了改变源代码本身(TimeFormatter._formats字典))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-12 01:47:23

老实说,最简单的方法就是修改TimeFormatter的_formats字典:

代码语言:javascript
复制
from enthought.chaco.scales.formatters import TimeFormatter
TimeFormatter._formats['days'] = ('%d/%m', '%d%a',)

如果你不想这样做,那么你需要继承TimeFormatter子类。这很简单。更麻烦的是,让chaco.scales包创建的所有现有scale系统都使用新的子类,而不是内置的TimeFormatter。如果你看看scales.time_scale.TimeScale,它在构造函数中接受一个'formatter‘关键字参数。因此,在time_scale.py的底部,当构建MDYScales列表时,您必须创建自己的列表:

代码语言:javascript
复制
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:

代码语言:javascript
复制
euro_scale_system = CalendarScaleSystem(*(HMSScales + EuroMDYScales))
tick_gen = ScalesTickGenerator(scale=euro_scale_system)

然后,您可以创建轴,并为其提供记号生成器:

代码语言:javascript
复制
axis = PlotAxis(tick_generator = tick_gen)

HTH,对不起,这是一个月的延迟。我并不经常查看StackOverflow。如果你还有其他的chaco问题,我建议在chaco-users邮件列表上注册…

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2173632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档