Как связать головью в бэкэнде с фронтендом bokehjs

Привет, я разрабатываю веб-страницу, на которой должны быть нанесены миллионы точек, поэтому я использую HoloViews в моем бэкэнде, чтобы создать график и отправить его как Модель Bokeh для моего внешнего интерфейса, в которой используется Bokehjs.

Итак, в API я вызываю функцию, которая делает это

hv.extension("bokeh")
points = hv.Points(df)
datashaded = hd.datashade(points, aggregator=ds.count_cat('cat')).redim.range(x=(-5,5),y=(-5,5))
plot = hv.render(datashaded)
return json.dumps(json_item(plot))

и возвращает модель Bokeh, которая отправляется в формате JSON во внешний интерфейс.

Функция hd.datashade визуализирует график боке и внутренне вызывает datashader для создания изображений при управлении масштабированием. Но проблема в том, что когда я вызываю эту функцию только один раз через API, элементы управления масштабированием не создают новое изображение, а просто увеличивают пиксели.

Мне нужен способ запустить «живой процесс python», как указано в документации, чтобы я мог элементы управления масштабированием и всплывающие подсказки. Но я понятия не имею, как этого добиться.


person Diego Rodriguez    schedule 20.02.2019    source источник


Ответы (1)


Как только вы сбрасываете данные в JSON, связь с кодом Python теряется. Вместо этого вы можете сделать что-то вроде http://pyviz.org/tutorial/13_Deploying_Bokeh_Apps.html:

hv.extension("bokeh")
points = hv.Points(df)
datashaded = hd.datashade(points, aggregator=ds.count_cat('cat')).redim.range(x=(-5,5),y=(-5,5))
doc = hv.renderer('bokeh').server_doc(datashaded)
doc.title = 'HoloViews Bokeh App'

Затем запустите bokeh serve --show file.py, чтобы запустить сервер Bokeh для вашего файла. Сервер Bokeh обеспечит выполнение процесса Python, предоставит веб-сервер для отображения вашего HTML / JS и установит соединения между ними.

person James A. Bednar    schedule 20.02.2019
comment
Спасибо, то, что вы мне сказали, работает, но мне все еще нужно отправить график в другое приложение, которое использует bokehjs, поэтому я отправил JSON с моделью боке. Как я могу установить связь между bokehjs в моем приложении и сервером bokeh? - person Diego Rodriguez; 21.02.2019
comment
Это зависит от вашего приложения. Разные люди встроили Bokeh в различные типы приложений, и, надеюсь, вы сможете найти что-то похожее на то, что вы имеете в виду, в документации по Bokeh или в stackoverflow. - person James A. Bednar; 22.02.2019