Search code examples
jupyter-notebooksliderbokehgoogle-colaboratoryipywidgets

push_notebook does not work in Google Colab Jupyter Notebook


I am using bokeh on Google colab. I wonder if anybody has used push_notebook in Google Collab Jupyter notebook. I am trying to run the following code in Jupiter Notebook on Google Colab , but it gets stuck on push_notebook() command

from ipywidgets import interact
import numpy as np
from bokeh.io import push_notebook,show,output_notebook
from bokeh.plotting import figure
output_notebook()

x=np.linspace(0,2*np.pi,2000)
y=np.sin(x)
p=figure(title="ff",plot_height=300,plot_width=600,y_range=(-5,5))
r=p.line(x,y,color="red",line_width=2)
def update(f,w=1,A=1,phi=0):
   print("fff")
   if f== "sin":func=np.sin
   if f== "sin":func=np.sin
   elif f=="cos":func =np.cos
   elif f== "tan":func=np.tan
   r.data_source.data['y']=A*func(w*x+phi) 
   push_notebook()
show(p,notebook_handle=True)
interact(update,f=["sin","cos","tan"],w=(0,100),A=(1,5),phi=(0,20,0.1))

Can anybody suggest what's wrong with the code and how it can be run on Google Colab?


Solution

  • push_notebook does not and cannot work on Google Collab due to the fact that Google's notebook implementation will not allow the necessary websocket connections to be opened. There is nothing that can be done about this until/unless Google makes changes on their end.

    ref: https://github.com/bokeh/bokeh/issues/9302