У меня есть диаграмма рассеяния, которую я создал в Bokeh, и я очень хотел бы иметь возможность изменять подсказки, отображаемые на Hovertool, в зависимости от вашего выбора в раскрывающемся меню.Если выбран «Stat Set 1», я хочу показать статистику 1 и 2.Если выбран «Stat Set 2», я хочу показать статистику 3,4,5.
Я бы хотел, чтобы конечный результат был html-файлом, поэтому использование CustomJS для обратного вызова, вероятно, является обязательным.,Вот где мне удалось получить с кодом.Проблема, скорее всего, связана с обратным вызовом, так как я совсем не уверен, как связываться со всплывающими подсказками с помощью обратного вызова.
import pandas as pd
from bokeh.plotting import figure, show
from bokeh.models import CustomJS, ColumnDataSource, HoverTool, ColumnDataSource, Select
from bokeh.layouts import row
#Create a dataframe with x and y coordinates and 4 different statistics
df = pd.DataFrame({
'x':[1,2,3],
'y':[1,2,3],
'stat1':[1,2,3],
'stat2':[4,5,6],
'stat3':[7,8,9],
'stat4':[10,11,12],
'stat5':[13,14,15]
})
#Create Bokeh's ColumnDataSource
source=ColumnDataSource(data=df)
#Create the different options for the Hovertool tooltips
option1=[('Stat1','@stat1'),
('Stat2','@stat2')]
option2=[('Stat3','@stat3'),
('Stat4','@stat4'),
('Stat5','@stat5')]
#Set the default option for the Hovertool tooltips
hover=HoverTool(tooltips=option1)
#Create the figure
plot = figure(tools=[hover])
plot.circle('x', 'y', source=source)
#Create the callback that will update the tooltips
callback = CustomJS (args=dict(tt=plot.hover), code="""
if (cb_obj.value='Stat Set 1') {
tt.tooltips=option1
} else {
tt.tooltips=option2
}
""")
#Create a dropdown menu that allows you to change which set of stats will populate the tooltips
stat_select=Select(options=['Stat Set 1', 'Stat Set 2'],
value='Stat Set 1',
title='What stats set do you want to see when you hover?', callback=callback)
show(row(stat_select,plot))