You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bokeh中实现Span线条的点击隐藏或静音功能

实现Bokeh Span垂直辅助线点击隐藏/显示功能

核心实现逻辑:Bokeh的Span属于标注类组件,本身默认没有绑定交互事件,我们可以给每个Span单独绑定Tap点击事件的回调,动态修改它的属性即可实现隐藏或者静音效果。

具体实现步骤

1. 导入依赖

from bokeh.plotting import figure, show
from bokeh.models import Span, CustomJS
from bokeh.events import Tap

2. 初始化基础图表

保留你原有的散点、折线逻辑,以及图例点击隐藏功能:

p = figure(width=800, height=400)
# 示例折线、散点
p.line([1,2,3,4,5], [2,5,3,7,1], legend_label="折线", line_width=2)
p.scatter([1,2,3,4,5], [2,5,3,7,1], legend_label="散点", size=8, color="red")
# 原有图例点击隐藏功能保留
p.legend.click_policy = "hide"

3. 给Span绑定点击回调

你可以选择点击完全隐藏,或者半透明静音两种效果:

# 示例生成3条垂直辅助线
for x_pos, color in zip([2,3,4], ["green", "orange", "purple"]):
    span = Span(
        location=x_pos, 
        dimension="height", 
        line_color=color, 
        line_width=3
    )
    # 绑定点击回调
    callback = CustomJS(args=dict(span=span), code="""
        // 方案1:点击完全隐藏/显示
        span.visible = !span.visible
        
        // 方案2:点击切换静音(半透明不消失),把上面代码换成下面这句即可
        // span.alpha = span.alpha == 1 ? 0.2 : 1
    """)
    span.js_on_event(Tap, callback)
    p.add_layout(span)

4. 渲染图表

show(p)

补充说明

如果需要批量控制所有Span的显隐,可以额外添加复选框、按钮组件,把所有Span实例传入回调统一修改属性即可。

内容的提问来源于stack exchange,提问作者One2three

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:06:06