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

如何将复选框勾选内容转换为对应pandas数据的Bokeh交互式绘图

Bokeh 自动绑定复选框与多列数据序列实现方案

核心逻辑是预生成所有数据序列的渲染对象,默认隐藏,通过复选框回调直接控制对应序列的可见性,无需手动为每个列写配置,完美适配数百列的场景。

完整实现代码

import pandas as pd
from bokeh.models import CheckboxGroup, ColumnDataSource, Scroll
from bokeh.plotting import figure
from bokeh.layouts import column
from bokeh.io import curdoc

# ---------------------- 数据源配置 ----------------------
# 替换为你自己加载完成的DataFrame,需保证日期列已转为datetime类型
df = pd.read_csv("your_data.csv")
df["date"] = pd.to_datetime(df["date"])

# 自动提取除日期列外的所有列作为可选数据序列
date_column = "date"
data_columns = [col for col in df.columns if col != date_column]
source = ColumnDataSource(df)

# ---------------------- 绘图初始化 ----------------------
p = figure(
    x_axis_type="datetime",
    width=1200,
    height=600,
    title="多序列交互式趋势图"
)
p.xaxis.axis_label = "日期"
p.yaxis.axis_label = "数值"

# ---------------------- 预生成所有数据序列 ----------------------
# 存储列名与对应渲染对象的映射
line_map = {}
for col in data_columns:
    # 生成折线,默认隐藏
    renderer = p.line(
        x=date_column,
        y=col,
        source=source,
        legend_label=col,
        line_width=2,
        visible=False
    )
    line_map[col] = renderer

# ---------------------- 复选框组件与回调绑定 ----------------------
# 自动用所有列名生成复选框选项,默认无选中
checkbox_group = CheckboxGroup(labels=data_columns, active=[])

# 状态变化回调:选中的序列设为可见,未选中的隐藏
def update_display(attr, old, new):
    for idx, col in enumerate(data_columns):
        line_map[col].visible = idx in new

checkbox_group.on_change("active", update_display)

# ---------------------- 页面布局与启动 ----------------------
# 复选框超过10个时建议加滚动容器,避免页面过长
scrollable_checkbox = Scroll(children=[checkbox_group], height=400, width=300)
layout = column(scrollable_checkbox, p)

curdoc().add_root(layout)

运行方式

将代码保存为app.py,在终端执行命令启动服务:

bokeh serve --show app.py

注意事项

  • 日期列必须提前转换为datetime类型,否则x轴无法正确识别为时间维度
  • 300个序列预生成不会产生性能负担,默认隐藏状态下不会占用渲染资源
  • 若需要自定义不同序列的颜色、线型等样式,可在循环生成折线时添加对应参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:36:03