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

使用openpyxl绘制柱状图时字典数据显示异常如何解决?

OpenPyXL柱状图问题修复:数据不符 + Y轴整数设置

一、图表数据与实际不符的解决办法

你的代码里有几个明显问题导致图表显示错误:

  • 数据列范围选多了:你往工作表写入的是[产品名称, 数量],数量仅在第2列,但代码中data的max_col=3,会包含空的第3列数据,直接导致图表数据混乱。
  • 标题参数设置错误:add_data时开启了titles_from_data=True,但你的第一行是真实数据而非表头,程序会把第一行的数量当作系列标题,引发所有数据错位。
  • 行数匹配逻辑错误:max_row用了len(barcode_list),但数据来源是product_quantity字典,应该用len(product_quantity)保证行数与实际数据一致,避免多取或少取数据。

修复后的完整代码片段:

# 写入数据(确保barcode_list的key与product_quantity完全匹配)
for key in product_quantity:
    active_sheet.append([barcode_list[key], product_quantity[key]])

my_chart = BarChart()

# 修正数据引用:仅取第2列(数量列),行数对应产品字典长度
data = Reference(worksheet=active_sheet,
                 min_row=1,
                 max_row=len(product_quantity),
                 min_col=2,
                 max_col=2)

my_chart.legend = None

# 关闭titles_from_data,因为没有表头行
my_chart.add_data(data, titles_from_data=False)

# 设置X轴分类(产品名称)
categories = Reference(active_sheet, min_col=1, min_row=1, max_row=len(product_quantity))
my_chart.set_categories(categories)

# 图表标题设置
my_chart.title = "产品销量统计"
my_chart.x_axis.title = '产品编号'
my_chart.y_axis.title = '销量'

# 将图表添加到工作表A1位置
active_sheet.add_chart(my_chart, "A1")

二、Y轴设置为整数刻度

直接修改图表Y轴的刻度属性与显示格式即可:

# 在添加图表前,加入这段代码配置Y轴
my_chart.y_axis.scaling.majorUnit = 1  # 主刻度间隔设为1
my_chart.y_axis.scaling.min = 0  # 可选:强制Y轴从0开始
my_chart.y_axis.number_format = '0'  # 强制显示整数,隐藏小数

设置完成后,Y轴只会显示0、1、2这类整数值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:20:32