python - 在 Bokeh javascript 回调中重新运行源
问题描述
想象一下Bokeh 文档中的这个例子:
# modified to by used in a notebook
from bokeh.layouts import column
from bokeh.models import CustomJS, ColumnDataSource, Slider
from bokeh.plotting import Figure, output_notebook, show
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.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
callback = CustomJS(args=dict(source=source), code="""
var data = source.data;
var f = cb_obj.value
var x = data['x']
var y = data['y']
for (var i = 0; i < x.length; i++) {
y[i] = Math.pow(x[i], f)
}
source.change.emit();
""")
slider = Slider(start=0.1, end=4, value=1, step=.1, title="power")
slider.js_on_change('value', callback)
layout = column(slider, plot)
show(layout)
y
我想知道是否有办法在更改要用于笔记本下一个单元格中的其他计算的小部件之后使用(最近的)值。我想到的是y
在回调中返回,但我对任何其他想法持开放态度。
解决方案
如果您希望 Python 运行时和 JS 输出之间完全同步,则必须在笔记本中嵌入 Bokeh 服务器应用程序。(Bokeh 服务器专门负责使事物保持同步。)否则,Jupyter 笔记本中的所有输出都是单向的,Python -> JavaScript,没有更新返回到 Python 内核。
您可以在此处查看嵌入了 Bokeh 服务器应用程序的示例笔记本:
https://github.com/bokeh/bokeh/blob/master/examples/howto/server_embed/notebook_embed.ipynb
推荐阅读
- sql - SQL查找动态列并更新值
- database - 如何检查 mongodb 集合中特定 _id 的字段是否存在?
- sas - 如何将spk文件中已有的时间编辑为当前时间?
- android - Adding markers from Google Maps in Asynctask
- python - 初学者问题:不绘制正态分布的 Python 散点图
- android - Zxing Scanner 未重新初始化
- laravel - 每次请求时高效更新表字段
- c# - 删除特定客户表 C# SQL 数据库
- c# - C# Json.net 将嵌套的 json 反序列化为字符串
- python - hmac 将不同的 hexdigest 值返回给 openssl