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

Python Bokeh绘制三级分类柱状图失败,请求技术协助

求助:Bokeh三级分类柱状图无法正常运行排查

我尝试用Python的Bokeh库绘制三级分类柱状图,但绘图功能一直无法正常运行,希望能帮忙排查问题。以下是我的代码:

from bokeh.models import ColumnDataSource, FactorRange
from bokeh.io import show
p = figure(plot_height=250, title="Fruit Counts by Year")
#tp是我的pandas DataFrame数据
x1=list(tp['SRN'])
x2=list(tp['SN'])
x3=list(tp['PN'])
counts = list(tp['VS.FEGE.RXMAXSPEED'])
x=[("SRN"+str(a1),"SN"+str(a2),"pN"+str(a3)) for a1,a2,a3 in zip(x1,x2,x3...

看了你的代码,我发现几个关键问题导致绘图无法正常运行:

  • 缺少figure类的导入:你只导入了ColumnDataSource和FactorRange,但figure是从bokeh.plotting模块导入的,没有这一行会直接触发NameError。
  • 语法错误:列表推导式的zip(x1,x2,x3...没有闭合括号,代码连执行都通不过。
  • 核心绘图逻辑缺失:你没有创建数据源关联数据,也没有调用vbar方法绘制柱状图,最后也没调用show(p)显示图表。

这里给你修正后的完整代码示例,你可以参考调整:

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

# 这里是模拟你的tp DataFrame,替换成你的真实数据即可
tp = pd.DataFrame({
    'SRN': [1, 1, 2, 2],
    'SN': [10, 20, 10, 20],
    'PN': [100, 200, 100, 200],
    'VS.FEGE.RXMAXSPEED': [50, 60, 70, 80]
})

# 正确构建三级分类的x轴因子元组
x = [(f"SRN{a1}", f"SN{a2}", f"PN{a3}") for a1, a2, a3 in zip(tp['SRN'], tp['SN'], tp['PN'])]
counts = tp['VS.FEGE.RXMAXSPEED'].tolist()

# 创建Bokeh的数据源对象
source = ColumnDataSource(data=dict(x=x, counts=counts))

# 创建figure时必须指定x_range为FactorRange,适配三级分类结构
p = figure(plot_height=250, title="Fruit Counts by Year", x_range=FactorRange(*x))

# 绘制柱状图,关联数据源中的字段
p.vbar(x='x', top='counts', width=0.9, source=source)

# 旋转x轴标签,避免长标签重叠影响可读性
p.xaxis.major_label_orientation = 1.2

# 显示图表
show(p)

主要修正点说明:

  1. 补充了from bokeh.plotting import figure的导入,解决figure未定义的问题。
  2. 补全了列表推导式的语法,确保代码能正常解析。
  3. 创建ColumnDataSource来管理数据,这是Bokeh处理数据的标准方式,也能更好地支持后续交互功能。
  4. 初始化figure时指定x_range=FactorRange(*x),让x轴正确识别三级分类的因子结构。
  5. 添加vbar方法绘制柱状图,绑定x轴和数值字段。
  6. 调整x轴标签的旋转角度,避免三级分类的长标签互相重叠。
  7. 最后调用show(p)来渲染并打开图表。

你可以把自己的真实数据替换掉示例中的tp DataFrame,然后运行代码试试,如果还有问题可以再补充报错信息或者数据结构细节~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:28:55