import numpy as np
from bokeh.plotting import figure
from bokeh.io import output_notebook
import bokeh.models.widgets as bk
import jupyter_bokeh as jbk
import ipywidgets as ip
output_notebook()
x = np.linspace(0, 2*np.pi, 2000)
y = np.sin(x)
p = figure(title="simple line example", plot_height=300, plot_width=600, y_range=(-5,5),
background_fill_color='#efefef')
r = p.line(x, y, color="#8888cc", line_width=1.5, alpha=0.8)
def update(f, w=1, A=1, phi=0):
if f == "sin": func = np.sin
elif f == "cos": func = np.cos
r.data_source.data['y'] = A * func(w * x + phi)
jbk.BokehModel(p)
ip.interact(update, f=["sin", "cos"], w=(0,50), A=(1,10), phi=(0, 20, 0.1))