Возможно ли сделать простой динамический выбор данных с помощью слайдера в Bokeh без пользовательского обратного вызова Python? Вот что я могу сделать с помощью обратного вызова, но для этого потребуется сервер Bokeh для работы в экспортированном html:
Однако на самом деле кажется, что пользовательский обратный вызов не должен быть необходим для этого, и это довольно проблематично в моем большом приложении. Нет ли какого-нибудь умного способа сделать это исключительно с помощью собственных объектов Bokeh, например CDSView или фильтра или чего-то еще? Я уверен, что какой-нибудь пользовательский javascript тоже может это сделать, но, опять же, я бы предпочел не делать этого, если это возможно.
import numpy as np
import pandas as pd
import ipywidgets as widgets
from bokeh.io import show, push_notebook
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
x = np.arange(0, 10, 0.1)
dfs = []
ts = range(100)
for t in ts:
y = x**(t/50.)
dfs.append(pd.DataFrame({"x": x, "y": y, "t": t}))
df = pd.concat(dfs)
cds = ColumnDataSource(df)
p = figure(x_range=(0,10), y_range=(0,100))
p.scatter(x='x', y='y', source=cds)
handle = show(p, notebook_handle=True)
def update(t):
cds.data = df[df.t == t]
push_notebook(handle=handle)
slider = widgets.SelectionSlider(value=0, options=ts)
io = widgets.interactive_output(update, {"t": slider})
display(slider, io)