散景图Unix时间戳,可读刻度线

时间:2017-01-05 23:02:59

标签: python datetime bokeh

我有两个列表,我在散景中绘制,第一个是由Unix时间戳组成的。我没有绘制问题,但我想要更容易阅读的日期显示如" 2002年1月2日和#34;而不是1010011671.我在第一次声明图形时尝试更改参数,但刻度线不准确。

我用:

绘图
t_list = [1239621855.0, 1232034716.0, 1265710807.0, 1289241153.0, 1265330842.0, 1267125816.0, 1285046868.0, 1260797722.0, 1270915355.0]
fig.circle(t_list, val_list, color=col, fill_color='firebrick', fill_alpha=.2, line_color='firebrick', line_alpha=.2, size=3)

我试过了:

fig = figure(title=title, plot_width=600, plot_height=500, tools=tools, responsive=True, x_axis_type='datetime')

fig.xaxis.formatter=DatetimeTickFormatter(formats=dict(
    seconds=["%d %B %Y"],
    minutes=["%d %B %Y"],
    hours=["%d %b %Y"],
    days=["%d %b %Y"],
    months=["%d %b %Y"],
    years=["%d %b %Y"]))

但是有了这些,我得到格式正确的刻度线,但日期不准确。显示的第一个刻度是1970年1月15日,这显然是错误的。

1 个答案:

答案 0 :(得分:0)

如上所述,Bokeh中日期时间值的基础类型是“自纪元以来的毫秒数”,这就是需要1000因子的原因。

另外,请注意,格式dict已被刻度格式化程序中的各个属性所取代,并且放宽了将值设置为列表的要求。在最近的Bokeh版本中,应该写上面的内容:

fig.xaxis.formatter = DatetimeTickFormatter(
    seconds="%d %B %Y",
    minutes="%d %B %Y",
    hours="%d %b %Y",
    days="%d %b %Y",
    months="%d %b %Y",
    years="%d %b %Y"
)