Мы можем легко создать интерактивный график с Bokeh, где пользователь может включать и выключать линию, но я не нашел способа скрыть линию по умолчанию (т.е. до того, как пользователь установит флажок).Например, код ниже вроде работает, но когда пользователь впервые загружает страницу, по умолчанию все строки включены, даже если они не активны (active = []).Затем пользователь должен установить флажки, чтобы они исчезли, а затем установить флажок для отображения строки, которая неуклюжа.Так как же скрыть строки по умолчанию, прежде чем пользователь выберет одну из них?
from bokeh.io import output_file, show
from bokeh.layouts import row
from bokeh.plotting import figure
from bokeh.models import CheckboxGroup, CustomJS
output_file("toggle_lines.html")
### Main plot
plot = figure()
# Dummy data for testing
x = list(range(90))
y0 = [ a**1.5 for a in x]
y1 = [ a**1.55 for a in x]
y2 = [ a**1.60 for a in x]
y3 = [ a**1.65 for a in x]
l0 = plot.line(x, y0, color='red')
l1 = plot.line(x, y1, color='red')
l2 = plot.line(x, y2, color='red')
l3 = plot.line(x, y3, color='red')
checkbox = CheckboxGroup(labels=["l0", "l1", "l2", "l3"], active=[])
checkbox.callback = CustomJS(args=dict(l0=l0, l1=l1, l2=l2, l3=l3, checkbox=checkbox),
code="""
l0.visible = 0 in checkbox.active;
l1.visible = 1 in checkbox.active;
l2.visible = 2 in checkbox.active;
l3.visible = 2 in checkbox.active;
""")
layout = row(checkbox, plot)
show(layout)