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
相关产品推荐
相关产品推荐

