小编Pab*_*yes的帖子

如何创建 Bokeh DataTable 日期时间格式化程序?

Bokeh 提供了 bokeh.models.DateFormatter() 来在列中显示日期(请参阅类 DateFormatter(**kwargs))。有没有办法创建一个还显示时间 HH:MM:SS 甚至毫秒的格式化程序?在表中编辑时(双击日期)可以看到纪元毫秒。我可以创建另一列,其中包含另一组具有一天中秒数的数据,并使用格式为“00:00:00”的类 NumberFormatter(**kwargs)和另一列包含毫秒,但我无法编辑这些数据并具有它反映在图形字形上,除非我以某种方式将一天中的秒数数据连续链接到日期时间值(有没有办法这样做?)。因此,我希望有一种方法可以在格式化程序上显示散景数据表中日期时间数据的时间。

from datetime import datetime
import bokeh, bokeh.plotting

data = dict(dates=[datetime(2016, 12, 2,15,30,0,123456),
                   datetime(2016, 12, 2,15,30,5,250500),
                   datetime(2016, 12, 2,15,30,10,756050)],
            altitude=[100.,150.,125.])

source = bokeh.models.ColumnDataSource(data)

columns = [bokeh.models.TableColumn(field="dates", title="Date",
           formatter=bokeh.models.DateFormatter()),
           bokeh.models.TableColumn(field="altitude", title="altitude")]

data_table = bokeh.models.DataTable(source=source, columns=columns,
                   row_headers=False,width=500, height=150, editable=True)

p = bokeh.plotting.figure(width=400,height=200,x_axis_type="datetime", 
                          background_fill_color="lightgray")
p.circle(x="dates",y="altitude",source=source, size=10)
bokeh.io.output_notebook()
bokeh.io.show(bokeh.io.gridplot([[p],[data_table]]))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新

解决方法是创建另一个时间为 HH:MM:SS 的列(不过没有毫秒。为此@Julian解决方案效果最好)。但编辑该值不会反映在图表中。编辑日期毫秒确实会更新图表,但不会更新时间列。可能有一种方法可以通过一些自定义连接时间列和日期列CustomJS。我必须评论一下,bokeh github 中有一个工作进度功能:更新日期datatable可能会很有帮助。

from datetime import datetime
import bokeh, bokeh.plotting

t1 = datetime(2016, 12, …
Run Code Online (Sandbox Code Playgroud)

python bokeh

5
推荐指数
1
解决办法
8699
查看次数

标签 统计

bokeh ×1

python ×1