Я хочу использовать виджеты bokeh из ноутбука jupyter для обновления графика боке. Мой (несколько Hacky) код выглядит следующим образом:Обновление участка боке с виджетами bokeh в ноутбуке jupyter
from bokeh.plotting import figure
from bokeh.io import output_notebook, push_notebook, show
from bokeh.models import CustomJS, Slider
output_notebook()
power = 0.5
x = [1,2,3]
y = [i**power for i in x]
fig = figure()
plt = fig.circle(x, y)
def update_plot(power):
x = plt.data_source.data['x']
plt.data_source.data['y'] = [i**power for i in x]
push_notebook(handle=bokeh_handle)
bokeh_handle = show(fig, notebook_handle=True)
##### 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 = Slider(start=0.1,
end=1,
value=1,
step=.05,
title="power",
callback=callback)
show(slider)
Идея заключается в том, что обратный вызов JS для слайдера вызывает функцию питона update_plot()
, которая изменяет данные о боке участка, а затем запускающее push_notebook()
.
Однако, когда я перемещаю ползунок, участок не обновляется, но some weird glyphs appear in the upper left corner (see red arrow).
Выполнение print(plt.data_source.data['y'])
показало мне, что обратный вызов и update_plot()
были фактически вызваны движением ползунка. Почему сюжет не обновляется должным образом? Или я чего-то не хватает?
(я знаю, что я могу сделать то же самое, используя ipywidgets.interact
, но я хочу, чтобы придерживаться боке виджетов.)
я могу воспроизвести это, кажется, что там может быть проблема с обновлением событий (то есть 'push_notebook') ближайшие маршевые во время другой текущей обработки событий (ползунок обратного вызова). «Странный глиф» на самом деле весь сюжет сократился до минимального размера холста (думаю, 20x20px). Я бы посоветовал представить эту информацию по [GitHub вопрос трекер] (https://github.com/bokeh/bokeh/issues). – bigreddot
Thx, проблема [вопрос вверх] (https://github.com/bokeh/bokeh/issues/5452) – joergd