Also stuck on this; it seems like using “.event” on a Selection1D object does clear (or set) the index parameter on that stream, but the change does not get reflected to the plot. Here’s a quick test example I adapted from the scatter demo:
import numpy as np
import holoviews as hv
from holoviews import dim
from holoviews import streams
import panel as pn
hv.extension('bokeh')
np.random.seed(42)
coords = [(i, np.random.random()) for i in range(20)]
scatter = hv.Scatter(coords).opts(tools=['lasso_select'])
sel = streams.Selection1D(source=scatter)
def clear_sel(event):
print(f"old index was: {sel.index}")
sel.event(index=[])
print(f"new index is: {sel.index}")
def set_sel(event):
print(f"old index was: {sel.index}")
sel.event(index=[1,2,3])
print(f"new index is: {sel.index}")
plt = scatter.opts(color='k', marker='x', size=10)
clr_btn = pn.widgets.Button(name='Clear Selection', button_type='primary')
clr_btn.on_click(callback = lambda event: clear_sel(event=event))
set_btn = pn.widgets.Button(name='Set Selection', button_type='primary')
set_btn.on_click(callback = lambda event: set_sel(event=event))
layout = pn.Row(plt,pn.Column(clr_btn,set_btn))
layout
Maybe there’s some attribute on the upstream holoviews object (scatter in this case?) that needs to be targeted instead of the stream? Anyone have ideas here?