Как я могу активировать / деактивировать HoverTool с помощью кнопки Bokeh? - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь связать HoverTool с кнопкой переключения в боке. Я хочу сгенерировать отдельную панель мониторинга как html, поэтому я бы хотел использовать некоторый cutom javascript для переключения hovertool с помощью кнопки переключения.

Вот пример кода:

from bokeh.plotting import ColumnDataSource, figure, output_file, show
from bokeh.layouts import row
from bokeh.models import Toggle, CustomJS

output_file("toolbar.html")

source = ColumnDataSource(
    data=dict(x=[1, 2, 3, 4, 5], y=[2, 5, 8, 2, 7], desc=["A", "b", "C", "d", "E"],)
)

TOOLTIPS = [
    ("index", "$index"),
    ("(x,y)", "($x, $y)"),
    ("desc", "@desc"),
]

p = figure(
    plot_width=400, plot_height=400, tooltips=TOOLTIPS, title="Mouse over the dots"
)

p.circle("x", "y", size=20, source=source)

# I would like to have some js code activate and deactivate the Hovertool
# and delete the option for the hovertool from the plots sidebar
button = Toggle(label="HoverTool", button_type="success")


show(row(p, button))

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

Начиная с Bokeh 2.0.1, динамическое добавление / удаление инструментов с панели инструментов не поддерживается. Вы можете активировать / деактивировать инструмент следующим образом:

button = Toggle(label="HoverTool", button_type="success", active=True)

cb = CustomJS(args=dict(button=button, hover=p.hover[0]), code="""
hover.active = button.active
""")

button.js_on_click(cb)
1 голос
/ 12 апреля 2020

Чтобы дополнить ответ bigreddot, вы также можете добавить

p.toolbar_location = None

Это полностью удалит панель инструментов, а не только кнопку HoverTool. HoverTool все еще можно переключать с помощью кнопки.

...