Dynamically link a Span and a Slider in a python bokeh plot

Here is a minimal complete example. Note that the recommended way to add annotations like Span is with plot.add_layout as shown below:

from bokeh.layouts import row, widgetbox
from bokeh.models import Slider, Span, CustomJS
from bokeh.plotting import figure, output_file, show

slider = Slider(start=0, end=10, value=3, step=0.1, title='Slider')

plot = figure(width=700, height=250, x_range=(0,10), y_range=(-1, 1))
span = Span(location=slider.value, dimension='height')
plot.add_layout(span)

callback = CustomJS(args=dict(span=span), code="""
    span.location = cb_obj.value
""")
slider.js_on_change('value', callback)

output_file('span_slider.html')

show(row(plot, widgetbox(slider)))

Tags:

Python

Bokeh