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

Bokeh代码中v.bar无结果,求助多语言电影Genre对比图表问题

问题排查与解决方案

常见导致v.bar无输出的原因及修复步骤

1. 确认数据已完成频次聚合

柱状图需要的是每个 Genre 对应的电影数量,而非原始的单条电影数据。先对每个 DataFrame 做 Genre 频次统计:

import pandas as pd

# 对每个语言的DataFrame统计Genre频次
english_genre = english1['Genre'].value_counts().reset_index()
english_genre.columns = ['Genre', 'Count']
english_genre['Language'] = 'English'

french_genre = french1['Genre'].value_counts().reset_index()
french_genre.columns = ['Genre', 'Count']
french_genre['Language'] = 'French'

german_genre = german1['Genre'].value_counts().reset_index()
german_genre.columns = ['Genre', 'Count']
german_genre['Language'] = 'German'

spanish_genre = spanish1['Genre'].value_counts().reset_index()
spanish_genre.columns = ['Genre', 'Count']
spanish_genre['Language'] = 'Spanish'

# 合并为统一数据源
combined_data = pd.concat([english_genre, french_genre, german_genre, spanish_genre])

执行后打印combined_data,确认每个 Genre 都有对应的计数和语言标识。

2. 检查Bokeh柱状图的参数配置

多语言对比的分组柱状图需要用FactorRange定义复合X轴,确保vbar能正确识别分组:

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, FactorRange

# 构建复合X轴值:(Genre, Language)
x_factors = [(row['Genre'], row['Language']) for _, row in combined_data.iterrows()]
source = ColumnDataSource(data=dict(
    x=x_factors,
    count=combined_data['Count']
))

# 创建图表
p = figure(
    x_range=FactorRange(*x_factors),
    height=400,
    title="Movie Genre Distribution by Language",
    x_axis_label="Genre & Language",
    y_axis_label="Number of Movies"
)

# 绘制柱状图
p.vbar(x='x', top='count', width=0.8, source=source)

# 旋转X轴标签避免重叠
p.xaxis.major_label_orientation = 1.2

# 显示图表
show(p)

注意:vbar的参数名要和ColumnDataSource中的字段完全匹配(大小写敏感),比如top='count'要对应source里的'count'字段。

3. 排查显示环境问题

  • 如果在Jupyter Notebook中运行,需先初始化Bokeh输出:
    from bokeh.io import output_notebook
    output_notebook()
    
  • 脚本运行时,确保最后调用show(p),否则图表不会弹出显示。

额外验证步骤

  • 单独打印每个语言的统计结果(如print(german_genre)),确认没有空值、异常值,且Genre分类格式统一(比如不要出现"Action"和"action"这种大小写差异)。
  • 如果预期是堆叠柱状图,需调整vbar的bottom参数,累加前序语言的计数实现堆叠效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:58:12