1

In BokehJS 2.4.2 the BoxZoomTool is always active by default, even when setting the active property to false when adding the tool.

const box_zoom = new Bokeh.BoxZoomTool({
    active: false,
});
plot.add_tools(box_zoom);

With other tools, such as the FreehandDrawTool, the tool is not active by default and the active property is not ignored.

How do you add the BoxZoomTool without being active by default?

enter image description here

mosc9575
  • 5,618
  • 2
  • 9
  • 32
Mark wijkhuizen
  • 373
  • 3
  • 10

1 Answers1

1

The BoxZoomTool has no parameter active, therefor the keyword is ignored in your example.

To set tools active, please check out this documentation.

In your case the line p.toolbar.active_drag = None does the trick, which deactivates all pan/drag tools, and you have only on off it. This line accepts "auto", None or an instance of pan/drag.

Python Example

from bokeh.plotting import show, figure, output_notebook
from bokeh.models import BoxZoomTool
output_notebook()

p = figure(width=300, height=300, tools='')
box_zoom = BoxZoomTool()
p.line(x=[1,2,3,4,5], y=[1,2,3,4,5])
p.toolbar.active_drag = None # could also be "auto" or box_zoom
p.add_tools(box_zoom)

show(p)

enter image description here

This can be adapted to JS.

mosc9575
  • 5,618
  • 2
  • 9
  • 32
  • 1
    Thanks (again) @mosc9575 for providing the solution. I have tried tried setting `p.toolbar.active_drag=null` before. However, as your solution explains, this should be set **before** `p.add_tools(box_zoom)`. When first adding the tool to the plot, setting the active drag tool to `null` does not deactivate the BoxZoomTool. – Mark wijkhuizen Apr 12 '22 at 05:56