【发布时间】:2018-03-14 12:10:49
【问题描述】:
过去几周我一直在学习 Bokeh 包(我认为它在可视化方面非常出色)。
不幸的是,我遇到了一个我一生都无法解决的问题,想办法解决。
以下两个链接很有帮助,但我似乎无法复制我的问题。
Using bokeh to plot interactive pie chart in Jupyter/Python - 参考答案#3
https://github.com/bokeh/bokeh/blob/0.12.9/examples/howto/notebook_comms/Jupyter%20Interactors.ipynb
以下代码(在 Jupyter 中)正确显示图形并正确显示滑块,但我不确定如何将两者连接起来,因为当我移动滑块时,图形保持静态。
我正在使用 Python 3.6 和 Bokeh 12.9
N = 300
source = ColumnDataSource(data={'x':random(N), 'y':random(N)})
plot = figure(plot_width=950, plot_height=400)
plot.circle(x='x', y='y', source=source)
callback = CustomJS(code="""
if (IPython.notebook.kernel !== undefined) {
var kernel = IPython.notebook.kernel;
cmd = "update_plot(" + cb_obj.value + ")";
kernel.execute(cmd, {}, {})};
""")
slider = Slider(start=100, end=1000, value=N, step=10, callback=callback)
def callback(attr, old, new):
N = slider.value
source.data={'x':random(N), 'y':random(N)}
slider.on_change('value', callback)
layout = column(slider, plot)
curdoc().add_root(layout)
show(widgetbox(slider, width = 300))
show(plot)
在阅读散景文档并阅读 GitHub 上的视图线程后,“回调”函数对我来说有点不清楚,因为我不完全确定要解析什么(如果实际上 attr、旧、新需要确定元素也解析了)
任何帮助将不胜感激
希望我没有错过任何明显的东西。
亲切的问候,
阿德里安
【问题讨论】:
-
你看过this指南吗?你错过了重要的
push_notebook。 -
感谢您的回复!我已经在 Jupyter 中执行了这段代码,它运行良好。但是,将 push_notebook 添加到我的代码中并不会改变任何内容。你在你的机器上执行过这个吗?
-
我认为你在
show函数中也需要notebook_handle=True。目前我无法运行你的代码,但如果没有其他人可以帮助你,我今晚会看看。也许如果您添加导入等以运行示例,更多人可能会更快地帮助您。我不太确定您为什么要进行自定义 js 回调?可能来自楔形示例?我认为plot.circle你不需要那个,但我只能在今晚进行测试。