Bokeh DataTable не будет обновляться после триггера («изменения») без нажатия на заголовок

Боке версия: 0.10 Питон: 3.4 Юпитер: 4.x

Цель: создать таблицу, которая отображает только данные, выбранные на диаграмме рассеяния

Проблема: DataTable обновляется только после нажатия, несмотря на: s2.trigger ('change'). В других примерах на сайте Bokeh один график обновит другой, используя эту технику: см.http://bokeh.pydata.org/en/latest/docs/user_guide/interaction.html#customjs-for-selections

приведенный ниже код должен работать в блокноте Jupyter, если вы используете вышеупомянутые версии.

и спасибо за любую помощь. Джо

    from bokeh.io import output_notebook, show
    from bokeh.plotting import figure
    from bokeh.models import CustomJS, ColumnDataSource
    from bokeh.models.widgets import DataTable, TableColumn
    from bokeh.io import vform

    output_notebook()

    x = list(range(-20, 21))
    y0 = [abs(xx) for xx in x]

    # create a column data source for the plots to share
    source = ColumnDataSource(data=dict(x=x, y0=y0))
    s2 = ColumnDataSource(data=dict(x=[1],y0=[2]))

    source.callback = CustomJS(args=dict(s2=s2), code="""
            var inds = cb_obj.get('selected')['1d'].indices;
            var d1 = cb_obj.get('data');
            var d2 = s2.get('data');
            d2['x'] = []
            d2['y0'] = []
            for (i = 0; i < inds.length; i++) {
                d2['x'].push(d1['x'][inds[i]])
                d2['y0'].push(d1['y0'][inds[i]])
            }
            s2.trigger('change');
        """)


    # create DataTable

    columns = [
            TableColumn(field="x", title="x"),
            TableColumn(field="y0", title="y0"),
        ]
    dt = DataTable(source=s2, columns=columns, width=300, height=300 )

    # create a new plot and add a renderer
    TOOLS = "box_select,lasso_select,help"
    left = figure(tools=TOOLS, width=300, height=300)
    left.circle('x', 'y0', source=source)


    show(vform(left,dt))

Ответы на вопрос(2)

Ваш ответ на вопрос