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

如何在hvplot下拉菜单中实现多值选择?

实现hvplot中groupby列的多值选择对比

hvplot原生的groupby参数默认生成单选下拉菜单,要实现多值选择对比,有两种实用方案:

方案一:用hvplot内置的widgets参数指定复选框控件

直接在hvplot调用中通过widgets参数,将groupby对应的控件替换为CheckboxGroup,就能支持多选。示例代码:

import pandas as pd
import hvplot.pandas
from bokeh.models.widgets import CheckboxGroup

# 加载示例数据集(鸢尾花)
df = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')

# 创建带多选复选框的交互式图表
plot = df.hvplot(
    x='sepal_length', 
    y='sepal_width', 
    groupby='species', 
    widgets={'species': CheckboxGroup}
)
plot

运行后会生成一个复选框组,勾选多个物种即可同时在图表中对比对应数据。

方案二:用Panel手动构建多选交互(更灵活)

如果需要更自定义的控件样式或交互逻辑,可以用Holoviz生态中的Panel库来实现:

import pandas as pd
import hvplot.pandas
import panel as pn

pn.extension()

# 加载数据集
df = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')

# 创建多选复选框控件
species_selector = pn.widgets.CheckBoxGroup(
    name='选择物种',
    options=df['species'].unique().tolist(),
    value=[df['species'].unique()[0]]  # 默认选中第一个物种
)

# 定义根据选择更新图表的函数
def update_plot(selected_species):
    filtered_data = df[df['species'].isin(selected_species)]
    return filtered_data.hvplot(x='sepal_length', y='sepal_width', by='species')

# 绑定控件与图表,生成交互式应用
interactive_app = pn.interact(update_plot, selected_species=species_selector)
pn.Column(species_selector, interactive_app[0]).servable()

这种方式可以自由调整控件位置、样式,还能添加其他交互组件,适合复杂场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:10:23