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

如何在Holoviews中用Checkbox组件切换散点图的显示状态

实现Checkbox切换散点组显示的完整方案

你可以通过Panel的依赖回调机制实现Checkbox与图表的交互,以下是完整可运行的代码:

import pandas as pd
import holoviews as hv
import panel as pn

hv.extension('bokeh')

# 生成数据与基础散点图
df1 = pd.DataFrame(data={'x': range(1,5), 'y': range(1,5)})
df2 = pd.DataFrame(data={'x': range(5,10), 'y': range(5,10)})
    
p1 = hv.Points(df1, label='a').opts(marker='s')
p2 = hv.Points(df2, label='b').opts(marker='o')
options = hv.opts.Points(size=10, show_legend=True)

# 创建Checkbox组件
a_checkbox = pn.widgets.Checkbox(name='a', value=True)
b_checkbox = pn.widgets.Checkbox(name='b', value=True)

# 定义交互逻辑:根据Checkbox状态动态更新图表
@pn.depends(a_checkbox.param.value, b_checkbox.param.value)
def update_plot(a_checked, b_checked):
    # 初始化空画布
    plot = hv.Empty()
    # 选中则添加对应点组
    if a_checked:
        plot *= p1
    if b_checked:
        plot *= p2
    # 应用统一样式
    return plot.opts(options)

# 组装界面并启动应用
pn.Column(a_checkbox, b_checkbox, update_plot).show()

核心逻辑说明

  1. @pn.depends装饰器:声明update_plot函数依赖于两个Checkbox的value参数,当Checkbox状态变化时,函数会自动重新执行并更新图表。
  2. 动态组合图表:函数内根据Checkbox的选中状态,选择性将p1/p2叠加到画布上;若都未选中,返回hv.Empty()显示空白区域,避免报错。
  3. 启动应用:通过.show()方法启动Panel交互应用,即可实时响应Checkbox的切换操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:22:48