У меня есть панд DataFrame, похожий на тот, нижеPython Bokeh CustomJS для виджетов
import pandas as pd
import numpy as np
df = pd.DataFrame(columns=['item'], data=list(range(0,15)))
df['crit'] = ['crit1','crit2','crit3']*5
df['label'] = np.random.choice(['label1','label2','label3'], size=(15,1))
df.head()
Я замышляет гистограмма с Bokeh
from bokeh.io import output_file, show, output_notebook
from bokeh.charts import Bar
from bokeh.layouts import layout
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import CheckboxButtonGroup
source = ColumnDataSource(df)
p = Bar(df, label='label', values='item', agg='count', legend=None)
checkbox = CheckboxButtonGroup(labels=["Opt1", "Opt2", "Opt3"], active=[0, 1])
grid = layout([[p], [checkbox]])
show(grid)
Я хотел бы добавить настраиваемый JS-обратный вызов, который фильтрует и сортирует t он передаст данные для обновления сюжета. Например, нажав кнопку «Opt2», я хотел бы отфильтровать фреймворк, чтобы хранить строки только там, где крит == crit2, и я бы хотел, чтобы сортировка данных была отсортирована (чтобы бары в порядке убывания).
Я не знаком с JS, только Python - мой друг ... Это что-то легко достижимое? Может ли кто-нибудь посадить меня на трассу? Пример, который я нашел в документации bokeh, не соответствовал этому варианту использования.
Просто, чтобы быть педантично понятным о вещах, это обратный вызов python на сервере Bokeh, а не обратный вызов CustomJS, как упоминалось в вопросе. Но это невозможно, например, запустить код pandas в обратном вызове 'CustomJS', поэтому, если использование pandas является обязательным требованием, сервер Bokeh требуется в любом случае. – bigreddot