Как сделать анимацию с боке в блокноте Jupyter - PullRequest
0 голосов
/ 07 октября 2019

Я хочу анимировать точку по заранее заданному пути на графике. Я хочу использовать 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)

В двух словах: как заставить точку перемещаться автоматически вместо скольжения ползунка? Правильный цикл должен делать эту работу. Однако я не мог этого понять.

...