Datetime Bokeh中的日期时间轴

Datetime Bokeh中的日期时间轴,datetime,bokeh,Datetime,Bokeh,对于我的图,我想在bokeh中使用“datetime”选项,如下所示: top = figure(width=900, height=500, x_axis_type='datetime') 我的x轴数据采用datetime.time格式 x_time = [datetime.time(0, 0), datetime.time(0, 0, 3), datetime.time(0, 0, 13), datetime.time(0, 0, 23), datetime.time(0, 0, 26)]

对于我的图,我想在bokeh中使用“datetime”选项,如下所示:

top = figure(width=900, height=500, x_axis_type='datetime')
我的x轴数据采用datetime.time格式

x_time = [datetime.time(0, 0), datetime.time(0, 0, 3), datetime.time(0, 0, 13), datetime.time(0, 0, 23), datetime.time(0, 0, 26)]
但是,尝试添加时会产生以下错误:

top.image_url(x=datetime.time(0,0,3), y= 10 url = [some_url]]

根据Rutger Kassies的建议,我将数据转换为微秒,现在只显示秒:
看来Bokeh注释只接受数字,而不是
Datetime
Time
对象。解决方法是将时间转换为微秒,并使用这些时间进行绘图

例如:

from bokeh.plotting import figure, show, output_notebook
from bokeh.models import Arrow
import datetime

def time_to_microseconds(t):
    dmin = datetime.datetime.min
    dummy_tdelta = (datetime.datetime.combine(dmin, t) - dmin)
    return dummy_tdelta.total_seconds()*1000

x_time = [datetime.time(0,0,1),
          datetime.time(0,0,2),
          datetime.time(0,0,3),
          datetime.time(0,0,4),
          datetime.time(0,0,5)]

top = figure(width=300, height=300, x_axis_type='datetime')

# a line works fine with time objects
top.line(x_time, range(len(x_time)))

# layout needs numbers
top.add_layout(Arrow(x_start=time_to_microseconds(datetime.time(0,0,2)), 
                     y_start=3,
                     x_end=time_to_microseconds(datetime.time(0,0,3)), 
                     y_end=2))

编辑:

您可以使用以下方法更改勾号格式:

from bokeh.models import DatetimeTickFormatter

top.xaxis.formatter = DatetimeTickFormatter(seconds=["%M:%S"],
                                            minutes=["%M:%S"],
                                            minsec=["%M:%S"],
                                            hours=["%M:%S"])

不确定问题海报使用的是哪个版本的bokeh,但现在,如果您有一个数据为datetime格式的x轴,您只需在figure函数中将其声明为参数,即可为您完成格式设置:

plot=figure(plot_height=300, plot_width=800,x_axis_type="datetime")
检查此处的示例:

这似乎是一个疏忽,应该很容易解决。我鼓励你在nm上提交一个问题。已经有一个问题被安排在下一个版本中:它有一个令人困惑的标题。谢谢!这会持续几秒钟,但当我达到几分钟时,它会从0开始重新开始。我在初始问题中添加了一张图片。看起来不错,这是因为它的默认勾号格式导致的,我已经更新了答案,显示了如何自定义格式。
plot=figure(plot_height=300, plot_width=800,x_axis_type="datetime")