尝试在我的数据集中的重要日期绘制垂直光线,以突出显示该日期之前/之后的趋势。我知道如何使用不在日期时间的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轴处于日期时间时,或者我在文档中遗漏了某些东西时,这根本不受支持吗?
答案 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')
希望这可以帮助任何偶然发现这个问题的人。