You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bokeh HTML图表共享x轴网格图下如何默认关闭pan平移工具?

Bokeh共享轴网格图pan工具默认激活问题解决

问题根因

gridplot默认开启工具栏合并功能,会将所有子图的工具栏整合为一个全局统一工具栏,单个子图的工具栏配置会被全局配置覆盖,因此单独给每个子图设置p.toolbar.active_drag = None不会生效。

解决方案

方案1:保留子图独立工具栏

如果需要每个子图都有独立工具栏,在生成gridplot时添加merge_tools=False参数即可让单图的工具栏配置生效:

grid = gridplot([p, p2], ncols=1, merge_tools=False)

方案2:使用合并后的全局工具栏

如果需要保留统一的全局工具栏,无需给单个子图设置工具栏属性,直接对生成的grid对象的全局工具栏配置即可:

grid = gridplot([p, p2], ncols=1)
grid.toolbar.active_drag = None

完整可运行示例代码

from bokeh.plotting import ColumnDataSource, figure, output_file, show,output_notebook,reset_output
from bokeh.models import HoverTool,Grid
from bokeh.layouts import gridplot
import datetime

reset_output()
output_notebook()
tools = 'pan,wheel_zoom,xbox_select,reset'
source = ColumnDataSource(data=dict(time=[2231231233123, 1431231233123, 1731231233123],y=[2, 5, 3],))                         
source2 = ColumnDataSource(data=dict(time=[1231231233123, 1431231233123, 1731231233123],x=[1, 2, 3],))

# 子图1
p = figure(width=400, height=200, x_axis_type="datetime",tools=tools)
p.circle('time', 'y', size=20, source=source)

# 子图2
p2 = figure(x_range=p.x_range,width=400,height=200,x_axis_type="datetime",tools=tools)
p2.circle('time', 'x', size=20, source=source2)

# 生成网格图并配置全局工具栏
grid = gridplot([p, p2], ncols=1)
grid.toolbar.active_drag = None
show(grid)

内容的提问来源于stack exchange,提问作者kko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:54:05