usando el widget MultiSelect para ocultar y mostrar líneas en bokeh

Estoy trabajando con cuatro conjuntos de datos, cada uno de ellos tiene varias series de tiempo. Estoy usando bokeh para trazarlos todos juntos, el resultado se ve así:

Bokeh gráfico multilínea con widget

from bokeh.plotting import figure, output_file, show
from bokeh.palettes import RdYlGn4
from bokeh.models import CustomJS, ColumnDataSource, MultiSelect
from bokeh.layouts import row, widgetbox

output_file("graph.html")
p = figure(plot_width=1000, plot_height=400, x_axis_type="datetime", title="title")
cadena=range(4)
for i,comp in enumerate(cadena):
    ts=[t for t in data_plu_price.columns if int(t) in df.T[df.C==comp].values]
    n_lines=len(data[ts].columns) 
    p.multi_line(xs=[data[ts].index.values]*n_lines, ys=[data[t].values for t in ts],line_color=RdYlGn4[i], legend=str(i))
p.title.align = "center"
p.title.text_font_size = "20px"
p.xaxis.axis_label = 'date'
p.yaxis.axis_label = 'price'

callback = CustomJS("""Some Code""")
multi_select = MultiSelect(title="Select:", value=cadena,
                       options=[(str(i), str(i)) for i in range(4)])
layout = row(p,widgetbox(multi_select))
show(layout)

El problema es que parece muy desordenado, así que quería usar el widget de selección múltiple para mostrar / ocultar todos los grupos de líneas múltiples (4). ¿Qué tipo de código necesito usar en la creación demulti_liney en el objeto de devolución de llamada para hacer esta interacción?

¿Alguna orientación?

Gracias por adelantado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta