python - 散景服务器不会提供简单的日期滑块
问题描述
以下代码应定义由单个日期滑块组成的散景应用程序。如果我将它保存为 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)
进一步的问题:
- 格式字符串是否确定更改滑块时更改的最低单位?(例如,如果我显示秒,它将是秒,如果我显示月份,它将是几个月)
- 在这种情况下 step 做什么?我选择什么值似乎没有任何区别,行为是相同的,它只是平滑地滑动。
- 为什么 step 必须是整数?我期待
timedelta
这里的价值。
解决方案
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)
接受似乎是一件合理的事情step
。timedelta
Bokeh 是一个巨大的项目,许多不错的便利并没有实现,因为之前没有人指出过它们。这将是一个在 GitHub 上制作的好问题,特别是如果你有兴趣帮助贡献的话。
推荐阅读
- c# - 我是 Unity 新手,一直在编码,直到遇到数学无法应用于字符串以更新分数的问题
- javascript - 从另一个数组内的数组对象中删除重复项
- workflow - 有没有办法为可选输入通道提供默认值?
- express-session - sessionStorage 和 express-session 的区别?
- android - 如何将资源传递给 ViewModel
- c# - 为什么 jQuery Ajax 调用在 Azure 上不起作用?
- flutter - Flutter:蓝牙设备
- python - Python中不同因素的正态性检验
- c# - 如何缓存 xsd xschemaset 以验证不同的 XML
- logstash - 如何检查json字符串中的键值对以获取logstash中的消息字段