当x轴处于日期时间时,绘制带有散景的光线

时间:2017-02-09 19:03:50

标签: python datetime bokeh

尝试在我的数据集中的重要日期绘制垂直光线,以突出显示该日期之前/之后的趋势。我知道如何使用不在日期时间的x轴绘制光线,但是当x处于日期时间时,我一直在努力让它工作。这是我试过的:

from bokeh.plotting import figure, output_file, show
from datetime import datetime as dt
from math import pi

p = figure(title = 'stuff',
           x_axis = 'date',
           y_axis = datapoints,
           x_axis_type = "datetime",
           tools='pan, wheel_zoom, box_zoom, reset, resize, previewsave',
           plot_width=1000)
#dates and data are lists containing datetime objects and y values
p.line(dates, data, line_width=1)
p.xaxis.major_label_orientation = pi/4
p.ray(x = dt(year, month, day), y = 0, length = 0, angle_units = "deg", 
      angle = 90, color = 'black')
output_file('data.html')
show(p)

这会产生一个很长的堆栈跟踪,并出现以下错误:

ValueError: expected an element of either String, Dict(String, Either(String, Instance(Transform), Instance(ColorMapper), Float)) or Float, got datetime.datetime(2014, 9, 18, 0, 0)

当x轴处于日期时间时,或者我在文档中遗漏了某些东西时,这根本不受支持吗?

1 个答案:

答案 0 :(得分:1)

想出来。我最初传入了x轴的日期时间对象列表。我用一个以毫秒为单位的时间戳列表替换了该列表,然后获得了调用日期的相应时间戳(以毫秒为单位),并使用它来定义光线。 修改后的代码:

p.line(lst_of_epoch_times_ms, data, line_width=1)
p.xaxis.major_label_orientation = pi/4
p.ray(x = ms_timestamp_callout, y = 0, length = 0, angle_units = "deg",
      angle = 90, color = 'black')

希望这可以帮助任何偶然发现这个问题的人。