如何在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
相关产品推荐
相关产品推荐

