I’m using an IndexFilter for which the underlying source changes sometimes. This can cause the indices of the filter to be out of bounds in respect to the data source. Currently this will trigger a JS out of bounds error.
I’m wondering if managing this is in general supposed to be a user responsibility?
from bokeh.io import curdoc
from bokeh.models import ColumnDataSource, CustomJS, HoverTool, Div, Spacer, CDSView, IndexFilter, Button
from bokeh.plotting import figure, output_file, show
from bokeh.layouts import row, column
data_1 = {"x": [2, 3, 5, 6, 8, 7], "y": [6, 4, 3, 8, 7, 5]}
data_2 = {"x": [2, 3, 5, 6, 8], "y": [6, 4, 3, 8, 7]}
view = CDSView(filter=IndexFilter([0,1,2,3,4,5]))
p = figure(width=400, height=400, tools="", toolbar_location=None, title='Hover over points')
source = ColumnDataSource(data_1)
p.scatter("x", "y", source=source, view=view, color='olive', hover_color='olive', hover_alpha=1.0)
def update_source():
source.data = data_2
button = Button(label="Change Source")
button.on_click(update_source)
curdoc().add_root(column(p, button))