Обновление индексов выбора круга боке с помощью TapTool - PullRequest
0 голосов
/ 01 июня 2018

У меня проблемы с обратным вызовом CustomJS на TapTool.Я хотел бы заставить выбор 50 пунктов после того, как один щелкнул.Поэтому я сделал обратный вызов JavaScript, который модифицирует список индексов, выбранных в источнике данных, и должен обновить график.В консоли я вижу, что источник данных обновлен, а график - нет.

Я сделал тестовую версию из примера документации (https://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks.html), но он также не работает.Это потому, что есть другой способ обновить график при изменении выбора?

Вот тестовая версия, которую я сделал:

from bokeh.layouts import column
from bokeh.models import CustomJS, ColumnDataSource, Slider
from bokeh.plotting import Figure, output_file, show

output_notebook()

x = [x*0.005 for x in range(0, 200)]
y = x

source = ColumnDataSource(data=dict(x=x, y=y))

plot = Figure(plot_width=400, plot_height=400)
plot.circle('x', 'y', source=source, line_width=3, line_alpha=0.6)

callback = CustomJS(args=dict(source=source), code="""
    var l_selected=source.selected;
    var indices = l_selected['1d'].indices;
    if(indices.length <= 1) {
        var new_indices = Array.from(new Array(50), (x,i) => i + indices[0]);
        l_selected['1d'].indices=new_indices;
    }
    source.selected=l_selected;
    console.log(source.selected)
    source.change.emit();
""")


slider = Slider(start=0.1, end=4, value=1, step=.1, title="power")
slider.js_on_change('value', callback)

plot.add_tools(TapTool(callback=callback))

layout = column(slider, plot)

show(layout)

Я не знаю, может ли это бытьполезно, но я использую версию Bokeh 0.12.16 и пытаюсь заставить ее работать в ноутбуке Jupyter

1 Ответ

0 голосов
/ 04 июня 2018

Себ дал ответ в комментариях.С тех пор как боке 0.12.15 source.selected['1d'] стало source.selected.indices

...