如何在散景中的 LegendItem 上创建工作回调?
How to create working callback on LegendItem in bokeh?
当渲染器的 visible
属性发生变化时,我想在 Legend
或 LegendItem
上调用 CustomJS
回调。
我有这个最小的例子:
from bokeh.plotting import figure, show, output_notebook
from bokeh.models import CustomJS, Legend
output_notebook()
p = figure(width=300, height=300, tools='pan')
p.add_layout(Legend(click_policy='hide'))
p.line([1,2,3,4,5], [1,2,3,4,5], legend_label="a")
p.legend.items[0].js_on_change("visible", CustomJS(code="""console.log("Output LegendItem")"""))
p.x_range.js_on_change("start", CustomJS(code="""console.log("Output XRange")"""))
show(p)
当我使用 PanTool
时,我可以看到文本 "Output XRange"
。如果我单击图例并隐藏该行,则日志不会显示任何消息。
如果 Legend
被点击或 LegendItems
隐藏,如何修改代码调用回调?
when the visible attribute of a renderer changes
在这种情况下,您应该直接在渲染器的 visible
属性 上设置回调,而不是尝试通过图例进行一些间接路由。
r = p.line(...)
r.js_on_change("visible", CustomJS(...))
当渲染器的 visible
属性发生变化时,我想在 Legend
或 LegendItem
上调用 CustomJS
回调。
我有这个最小的例子:
from bokeh.plotting import figure, show, output_notebook
from bokeh.models import CustomJS, Legend
output_notebook()
p = figure(width=300, height=300, tools='pan')
p.add_layout(Legend(click_policy='hide'))
p.line([1,2,3,4,5], [1,2,3,4,5], legend_label="a")
p.legend.items[0].js_on_change("visible", CustomJS(code="""console.log("Output LegendItem")"""))
p.x_range.js_on_change("start", CustomJS(code="""console.log("Output XRange")"""))
show(p)
当我使用 PanTool
时,我可以看到文本 "Output XRange"
。如果我单击图例并隐藏该行,则日志不会显示任何消息。
如果 Legend
被点击或 LegendItems
隐藏,如何修改代码调用回调?
when the visible attribute of a renderer changes
在这种情况下,您应该直接在渲染器的 visible
属性 上设置回调,而不是尝试通过图例进行一些间接路由。
r = p.line(...)
r.js_on_change("visible", CustomJS(...))