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)