我想在图中的预定义路径上设置点的动画。我想为此使用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循环应该可以完成这项工作。但是,我无法弄清楚。