0
import pandas as pd
from math import pi
from datetime import datetime as dt
from bokeh.io import show
from bokeh.models import DatetimeTickFormatter
from bokeh.plotting import figure

d = {'col1': [dt(2015, 1, 1), dt(2015, 1, 2), dt(2015, 1, 3)], 'col2': [100, 200, 300]}
df = pd.DataFrame(data=d)
p = figure(plot_width=400, plot_height=400)
p.line(df.col1, df.col2)
p.xaxis.formatter = DatetimeTickFormatter(days=f"%m/%d %H:%M",
                                          months="%m/%d %H:%M",
                                          hours="%m/%d %H:%M",
                                          minutes="%m/%d %H:%M:%S",
                                          minsec="%m/%d %H:%M:%S",
                                          seconds="%m/%d %H:%M:%S")

p.xaxis.major_label_orientation = pi/4
show(p)

我想修改日期时间代码类以允许刻度标签中的其他数据。例如,每当散景放置诸如“1/01 00:00 - 100”或“1/01 12:00”之类的刻度标签时,我希望在“col2”中查看相应的数据。第二个示例没有添加数据,因为它不是源中的一个点。对于第二个示例,插值也是可以接受的,因为实际数据集中的数据频率很高。

4

1 回答 1

0

Bokeh 实际上是两个独立的库:

  • 散景 Python 包

  • 一个 JavaScript 库 BokehJS

作为一个网络绘图工具,Bokeh 的 Python 部分实际上只是一个非常薄的包装器,用于驱动浏览器中的 BokehJS 组件。实现的所有实际工作都在 BokehJS 中(用 TypeScript 编写)。因此,通常不可能对 Bokeh 进行纯粹的 Python 更改或编辑或子类,这将产生很大或任何影响。

通过提供您自己的新 Bokeh 对象子类的 Javascript 实现,可以为 Bokeh 创建自定义扩展。实际上,该文档页面底部有一个自定义刻度格式化程序的示例。SO 不是一个代码编写站点或服务,但如果您尝试创建自己的自定义扩展并遇到困难,您可以为您尝试的内容提供完整的代码,并就如何修复现有代码提出具体的、有针对性的问题。

于 2021-02-10T19:25:10.157 回答