javascript - 在绘图中的 ColumnDataSource 更改时触发 JavaScript 回调
问题描述
当 ColumnDataSource 用新数据更新时,Bokeh 中是否有办法触发 JavaScript 回调?
我正在寻找类似的东西......
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)
解决方案
在 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))
推荐阅读
- batch-file - 如果“系统找不到指定的文件”,如何使“类型”命令变为 >nul
- python - 检查 pandas DataFrame 中的两行是否具有相同的值集,无论列顺序如何
- python - 获取图片 - Python-pptx
- oracle - 如何拆分现有分区
- boost - 为什么 FindBoost.cmake 总是读取旧的 BOOST_ROOT,它不再存在,不再存在于任何存储环境变量的文件中
- kotlin - 错误:“声明多个名为...的 JSON 字段”解析具有接口中定义的 getter/setter 值的类时
- macros - 如何使 Kentico 表单中的字段可见性基于两个条件工作
- python - 如何用棍子击球使球移动?
- laravel - laravel 更新编辑数据库记录 - 提交表单时出错
- java - 将 Long/ULong 转换为带有填充零的无符号十六进制字符串