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

如何在Bokeh 2.4.3中从ColumnDataSource提取列名?

获取ColumnDataSource的列名并用作图表标题

ColumnDataSource的data属性本质是一个字典,字典的键就是对应的列名,直接操作这个字典就能拿到你要的内容,以下是具体实现方法:

1. 直接提取列名

通过source.data.keys()获取所有列名,转成列表更方便使用:

# 获取列名列表
column_names = list(source.data.keys())
print(column_names)  # 输出: ['index', 'Cats', 'Dogs']

注意:默认会多出一个'index'键(对应DataFrame的索引),如果只需要原始DataFrame的列名,过滤掉即可:

column_names = [col for col in source.data.keys() if col != 'index']

2. 结合原始DataFrame(如果能访问)

要是你还能拿到最初的df,直接用df.columns更简单:

column_names = list(df.columns)

完整示例:用列名设置图表标题

下面是把列名拼接成图表标题的完整代码:

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource
import pandas as pd
import numpy as np      

df = pd.DataFrame(np.random.randint(0,100,size=(10, 2)), columns=('Cats', 'Dogs'))
source = ColumnDataSource(df)

# 获取并处理列名
column_names = [col for col in source.data.keys() if col != 'index']
# 拼接成自定义标题
plot_title = f"数据对比:{' vs '.join(column_names)}"

# 创建图表并设置标题
p = figure(title=plot_title, x_axis_label='样本索引', y_axis_label='数值')
p.line(x='index', y='Cats', source=source, legend_label='Cats', color='orange')
p.line(x='index', y='Dogs', source=source, legend_label='Dogs', color='navy')

show(p)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:45:04