我有一个散景图和一个线图以及许多跨度 vlines。线图可以通过图例轻松隐藏,但如何隐藏跨度线?我想单击单个跨度线以完全静音或隐藏它们。如何才能做到这一点?
1 回答
1
我想展示的解决方案是对此处使用复选框来切换行的改编。这也可以用于 Spans。
from bokeh.io import output_notebook, show
from bokeh.models import Span, CheckboxGroup, CustomJS
from bokeh.plotting import figure
from bokeh.layouts import row
output_notebook()
p = figure(width=300, height=300)
p.line(x=[1,2,3,4,5], y=[1,2,3,4,5], line_width=2, legend_label='Line')
s = []
span_positions = [2.5,3.5]
for pos in span_positions:
s.append(Span(dimension='height', location=pos))
p.renderers.extend(s)
checkbox = CheckboxGroup(
labels=['Span_'+str(i) for i in span_positions],
active=list(range(len(span_positions))),
width=100
)
callback = CustomJS(args=dict(spans=s,checkbox=checkbox),
code="""
for(var i=0; i<spans.length; i++){
spans[i].visible = checkbox.active.includes(i);
}
"""
)
checkbox.js_on_change('active', callback)
layout = row(p,checkbox)
show(layout)
输出
评论
我试图将 Spans 添加到图例中以避免 CheckBoxes,但我无法做到,因为LegendItem
散景不接受 Spans。所以这可能并不理想。
于 2021-11-01T08:59:12.810 回答