interaction_callbacks_for_selections.py — Anaconda Enterprise 4.4 documentation

Anaconda Enterprise: Documentation

# interaction_callbacks_for_selections.py

    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)