使用 Bokeh widget/callback 控制 Bokeh xwheel_zoom 工具

Control the Bokeh xwheel_zoom tool using a Bokeh widget/callback

我正在使用 xwheel_zoom (WheelZoomTool) 制作带有日期时间轴的散景图。

p = figure(x_axis_type="datetime", tools='xwheel_zoom, crosshair, undo, reset')

我提供 pandas 时间戳作为该图表的 x 值。例如:pd.Timestamp.now(tz='utc')。此图表的 x 轴范围是过去 24 小时的数据。

start = pd.Timestamp.now(tz='utc') - pd.Timedelta(hours=24)

使用 xwheel_zoom,我可以放大以更好地查看给定时间(例如最后一小时)的图表。

在 Bokeh 中有什么方法可以通过编码或连接到 xwheel_zoom 并使用 Bokeh 小部件(例如 Bokeh 下拉菜单)控制它来实现此缩放功能?

我的 objective 是有一个按钮可以点击并让它显示最近一小时的放大 x_axis,或者显示我定义的日期时间段之间的图表。理想情况下,我不想再次 re-define/re-draw 图表,只想控制 xwheel_zoom 功能。

你不需要任何工具来做到这一点。只需在回调中更改所需的范围。类似于:

b = Button()

def update():
    p.x_range.update(start=0, end=1)

b.on_click(update)

该示例仅在与 bokeh serve 一起使用时才有效。如果您不使用它,您可以重写代码以使用 CustomJSjs_on_click.