У меня есть простой блокнот взаимодействия с боке , который фиксирует координаты, которые рисует пользователь, и он отлично работает в Jupyter:
import numpy as np
N = 500
x = np.linspace(0, 3, N)
y = np.linspace(0, 3, N)
xx, yy = np.meshgrid(x, y)
z = np.sin(xx) * np.cos(yy)
from bokeh import events
from bokeh.io import show, output_notebook
from bokeh.plotting import figure
output_notebook()
geom = {}
global geom
def print_event(attributes=[]):
def python_callback(event):
geom.update(event.__dict__['geometry'])
return python_callback
def modify_doc(doc):
p = figure(x_range=(0, 3), y_range=(0, 3),
tools='reset,box_select,lasso_select,poly_select', plot_height=300)
p.image(image=[z], x=0, y=0, dw=3, dh=3, palette='Spectral11')
p.on_event(events.SelectionGeometry, print_event(attributes=['geometry']))
doc.add_root(p)
show(modify_doc)
print(geom)
, но в JupyterHub show(modify_doc)
не создает график, и консоль разработчика показывает, что JS не удалось загрузить данные ответа на этот запрос:
http://localhost:43474/autoload.js?bokeh-autoload-element=111c97fa-dbc8-437c-9770-471dc23fb13f&bokeh-absolute-url=http://localhost:43474&resources=none
Так как я получаю доступ к Dask Dashboard на моем jupyterhub в
http://pangeo.esipfed.org/user/rsignell-usgs/proxy/8787
Хотя, может быть, что-то подобное может сработать:
show(modify_doc, notebook_url='pangeo.esipfed.org/user/rsignell-usgs/proxy')
но это сгенерировало этот URL:
http://pangeo.esipfed.org/user/rsignell-usgs/proxy:34560/autoload.js?bokeh-autoload-element=870004ec-7366-4b38-b20f-2119e2b52327&bokeh-app-path=/user/rsignell-usgs/proxy:34560&bokeh-absolute-url=http://pangeo.esipfed.org/user/rsignell-usgs/proxy:34560&resources=none
, что выдало ошибку 404
.
Я вижу, что несколько месяцев назад было улучшение Bokeh , которое должно позволить такого рода взаимодействиям работать, и я понимаю, что я должен быть в состоянии указать notebook_url
как функцию, чтобы сделать эту работу , но я не могу понять это.
Понятно, что я делаю неправильно, или у кого-то есть пример того, как это работает?