如何在jupyter笔记本中使用bokeh制作动画

时间:2019-10-06 23:00:35

标签: python animation jupyter-notebook bokeh

我想在图中的预定义路径上设置点的动画。我想为此使用bokeh,我想知道是否可以在笔记本环境而不是curdoc()环境中绘制一个更新的图形。

我不确定是否可以直接这样做,所以我尝试制作一个定义时间的Slider对象。通过更改滑块,绘图将更新。但是我无法进一步推动它自动更改。

一个简单的代码(改编自here)如下

from bokeh.plotting import figure
from bokeh.io import output_notebook, push_notebook, show
from bokeh.models import CustomJS, Slider
from bokeh.layouts import row
import numpy as np

output_notebook()

x = [0]
y = [0]

fig = figure()
plot = fig.circle(x, y, )


def update_plot(time):
    plot.data_source.data['x'] = [np.cos(time)] 
    plot.data_source.data['y'] = [np.sin(time)]
    push_notebook(handle=bokeh_handle)  

##### new notebook cell #####

callback = CustomJS(code="""
if (IPython.notebook.kernel !== undefined) {
    var kernel = IPython.notebook.kernel;
    cmd = "update_plot(" + cb_obj.value + ")";
    kernel.execute(cmd, {}, {});
}
""")

slider_t = Slider(start=0, 
                end=1,
                value=0,
                step=.05,
                title="time",
                callback=callback)
bokeh_handle = show(row(fig, slider_t), notebook_handle=True)
概括地说,如何使点自动移动而不是滑动滑块?一个适当的for循环应该可以完成这项工作。但是,我无法弄清楚。

0 个答案:

没有答案