Запустить обратный вызов JavaScript при изменении ColumnDataSource на графике - PullRequest
0 голосов
/ 23 апреля 2019

Есть ли в Bokeh способ вызвать обратный вызов JavaScript при обновлении ColumnDataSource новыми данными?

Я ищу что-то похожее на это ...

cds1 = ColumnDataSource(some_pandas_dataframe)
cds1.js_onchange('', callback) # attach some kind of callback here to do something when cds1.data changes.
cds2 = ColumnDataSource(some_pandas_dataframe)

cds1.data.update(cds2.data)

1 Ответ

0 голосов
/ 23 апреля 2019

Один из способов сделать это в Bokeh v1.1.0 - прикрепить обратный вызов к атрибуту data ColumnDataSource:

import numpy as np
from bokeh.plotting import Figure, show, curdoc
from bokeh.models import CustomJS, ColumnDataSource, Button, Column
from bokeh.events import Tap

cds = ColumnDataSource(data = dict(x = [0.1, 0.9], y = [0.1, 0.9]))
p = Figure(x_range = (0, 1), y_range = (0, 1), tools = "")
p.scatter(x = 'x', y = 'y', source = cds)

data = dict(x = [0.5], y = [0.5])
callback = CustomJS(args = {'cds': cds, 'data': data}, code = "cds.data = data")

button = Button(label = 'click me')
button.js_on_event('button_click', callback)

cds.js_on_change('data', CustomJS(code = "alert('data_change_detected');"))

show(Column(p, button))
...