首页 > 解决方案 > 散景服务器不会提供简单的日期滑块

问题描述

以下代码应定义由单个日期滑块组成的散景应用程序。如果我将它保存为 html ( serve=False),它会按预期工作,但散景服务器会返回一个空白页面。有什么线索吗?

s = datetime.strptime('2019-01-01 14:00:00', '%Y-%m-%d %H:%M:%S')
e = datetime.strptime('2019-01-01 15:00:00', '%Y-%m-%d %H:%M:%S')
v = datetime.strptime('2019-01-01 14:01:00', '%Y-%m-%d %H:%M:%S')
st = timedelta(seconds=7)
slider = DateSlider(start=s, step=2, end=e, value=e, format='%Y-%m-%d %H:%M')
mylayout = column(children=[slider])

if serve:
    curdoc().add_root(mylayout)

else:
    fname = os.path.join(...)
    output_file(fname)
    save(mylayout)

进一步的问题:

  1. 格式字符串是否确定更改滑块时更改的最低单位?(例如,如果我显示秒,它将是秒,如果我显示月份,它将是几个月)
  2. 在这种情况下 step 做什么?我选择什么值似乎没有任何区别,行为是相同的,它只是平滑地滑动。
  3. 为什么 step 必须是整数?我期待timedelta这里的价值。

标签: pythonserverbokeh

解决方案


Bokeh 艺术中的所有日期时间值通常以毫秒为单位,例如,日期时间轴值是自纪元以来的毫秒数。在这种情况下,间隔也是如此,例如这里是 5 分钟的增量:

from bokeh.models import DateSlider
from bokeh.io import curdoc
from bokeh.layouts import column
from datetime import datetime, timedelta

s = datetime.strptime('2019-01-01 14:00:00', '%Y-%m-%d %H:%M:%S')
e = datetime.strptime('2019-01-01 15:00:00', '%Y-%m-%d %H:%M:%S')
v = datetime.strptime('2019-01-01 14:01:00', '%Y-%m-%d %H:%M:%S')
st = timedelta(seconds=7)
slider = DateSlider(start=s, step=1000*60*5, end=e, value=e, format='%Y-%m-%d %H:%M')
mylayout = column(children=[slider])

curdoc().add_root(mylayout)

接受似乎是一件合理的事情steptimedeltaBokeh 是一个巨大的项目,许多不错的便利并没有实现,因为之前没有人指出过它们。这将是一个在 GitHub 上制作的好问题,特别是如果你有兴趣帮助贡献的话。


推荐阅读