В приложении bokeh я хочу повторно использовать отображение подсказок, созданных HoverTool.
В частности, я хочу каким-либо образом выбрать точку данных в источнике данных, а затем показать дополнительную информацию для этой точки.Выбор может произойти, например, с помощью ползунка.Я могу добавить самодельный ярлык (см. Пример кода), но было бы намного приятнее, если бы можно было показать всплывающие подсказки, сгенерированные HoverTool, потому что они уже хорошо отформатированы.
В примере кода показан слайдер, который выбирает точку данных и устанавливает собственную метку.Я хотел бы избежать использования пользовательской метки, но как-то вызывать всплывающие подсказки.
from bokeh.io import show
from bokeh.layouts import column
from bokeh.models import HoverTool, ColumnDataSource, Slider, CustomJS, LabelSet
from bokeh.plotting import figure
import numpy as np
x = np.linspace(0,1)
y = np.linspace(0,2)
ds = ColumnDataSource(data=dict(x=x,y=y))
fig = figure()
fig.scatter(x='x', y='y', source=ds)
# a datasource to show labels at a x/y position, set in the JS callback
labels = ColumnDataSource(data=dict(x=[], y=[], t=[], ind=[]))
fig.add_layout(LabelSet(x='x', y='y', text='t', source=labels))
# slider that selects a datapoint and creates the label for the point
slider = Slider(start=0, end=len(x), value=0, step=1)
code = """
labels.data = {'x':[],'y':[],'t':[]}
source.selected.indices = [slider.value]
labels.data = {'ind':[slider.value],
'x':[source.data.x[slider.value]],
'y':[source.data.y[slider.value]],
't':[source.data.x[slider.value]]}
labels.change.emit()
source.change.emit()
"""
callback = CustomJS(args=dict(source=ds, slider=slider, labels=labels), code=code)
slider.js_on_change('value', callback)
# hover to show default tooltips, can those be triggered?
hover = HoverTool(mode='vline')
fig.add_tools(hover)
show(column(slider, fig))