Я хочу анимировать точку по заранее заданному пути на графике. Я хочу использовать bokeh для этого, и мне было интересно, можно ли построить график обновления в среде ноутбука, а не в среде curdoc()
.
Я не уверен, есть ли что-то прямое, чтобы сделатьпоэтому я попытался создать объект Slider
, который определяет время. При смене слайдера сюжет обновляется. И все же я не мог продвинуть его дальше, чтобы он автоматически изменился.
Простой код (адаптированный с здесь ) выглядит следующим образом:
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)
В двух словах: как заставить точку перемещаться автоматически вместо скольжения ползунка? Правильный цикл должен делать эту работу. Однако я не мог этого понять.