如何在 Bokeh 中显示或隐藏图形线

How to show or hide a graph line in Bokeh

我们如何再次在 Bokeh 中打开和关闭(隐藏或显示)一条线?下面的示例图没有更新。

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(25))
y0 = [ 3**a for a in x]

l0 = plot.line(x, y0, color='blue')
l0.visible = False

checkbox = CheckboxGroup(labels=["l0"], active=[1])

checkbox.js_on_click(CustomJS(args=dict(l0=l0), code="""l0.visible = 0 in checkbox.active;"""))

layout = row(checkbox, plot)
show(layout)

谢谢,

两个主要的东西:

  1. 您的 active 参数应该是 [0] 表示组中的第 0 个复选框应该是活动的,或者不应该提供,表示所有复选框的默认状态应该是非活动的。通过指示 [1] 你告诉散景实际上有 2 个复选框,其中 1 个处于活动状态,这会导致错误。
  2. 您需要通过回调中的 args 将您的复选框对象传递到 javascript 代码中(您已经使用该行完成了此操作,只需要包含复选框组还有。

这段代码对我有用:

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(x_range=(0, 25))

# Dummy data for testing
x = list(range(25))
y0 = [ 3**a for a in x]

l0 = plot.line(x, y0, color='blue')
l0.visible = False

checkbox = CheckboxGroup(labels=["l0"])

checkbox.js_on_click(CustomJS(args=dict(l0=l0, checkbox=checkbox), code="""l0.visible = 0 in checkbox.active;"""))

layout = row(checkbox, plot)
show(layout)