First, great site, great people. You all have helped me a lot with my learning. Thanks!
I am having trouble with Bokeh and browsers. In particular, I am trying to get a Javascript callback to work in Bokeh.
I downloaded this example code from this website
https://docs.bokeh.org/en/latest/docs/user_guide/interaction/callbacks.html.
The website contains an example of using the lasso tool.
The code works perfectly on the website, but when I copy the code into Python and run it myself, the JS callbacks don't work. The lasso tool part works fine. I have tried running this on IE, Chrome, Firefox, work computer and home computer.
I am not very good with Javascript in general, so any insight into this problem will be greatly appreciated.
Cheers and thanks in advance.
Code from the website below:
from random import random
from bokeh.layouts import row
from bokeh.models import CustomJS, ColumnDataSource
from bokeh.plotting import figure, output_file, show
output_file("callback.html")
x = [random() for x in range(500)]
y = [random() for y in range(500)]
s1 = ColumnDataSource(data=dict(x=x, y=y))
p1 = figure(plot_width=400, plot_height=400, tools="lasso_select", title="Select Here")
p1.circle('x', 'y', source=s1, alpha=0.6)
s2 = ColumnDataSource(data=dict(x=[], y=[]))
p2 = figure(plot_width=400, plot_height=400, x_range=(0, 1), y_range=(0, 1),
tools="", title="Watch Here")
p2.circle('x', 'y', source=s2, alpha=0.6)
s1.callback = CustomJS(args=dict(s2=s2), code="""
var inds = cb_obj.selected['1d'].indices;
var d1 = cb_obj.data;
var d2 = s2.data;
d2['x'] = []
d2['y'] = []
for (i = 0; i < inds.length; i++) {
d2['x'].push(d1['x'][inds[i]])
d2['y'].push(d1['y'][inds[i]])
}
s2.change.emit();
""")
layout = row(p1, p2)
show(layout)