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

使用openpyxl生成的Excel散点图坐标轴不显示问题求助

问题解决:openpyxl生成散点图坐标轴不显示

可能原因及排查步骤

1. 检查Excel版本与渲染差异

不同办公软件(如微软Excel、WPS)或同一软件的不同版本,对openpyxl生成的OOXML格式图表渲染可能存在差异。尝试:

  • 换用微软Excel最新版本打开生成的文件,而非WPS或旧版Excel
  • 让同事把他生成的文件发给你,在本地打开看是否能正常显示坐标轴,排除文件本身问题

2. 修正Series的数据引用范围

你的代码中,values引用包含了表头行(min_row=1),而xvalues从数据行(min_row=2)开始,部分Excel版本可能因数据范围不匹配导致坐标轴渲染异常。修改代码中values的引用:

values = Reference(ws, min_col=i, min_row=2, max_row=7)  # 从第2行开始,和xvalues保持一致

重新生成图表后查看效果。

3. 回退Python版本至稳定版

Python 3.13是较新的版本,openpyxl 3.1.5可能尚未完全适配该版本的所有细节。尝试降级到Python 3.12.x(当前稳定版),重新安装openpyxl 3.1.5后运行代码,验证是否解决问题。

4. 检查本地Excel的图表显示设置

打开生成的Excel文件,右键点击图表空白处选择「图表选项」,确认:

  • 坐标轴选项中「坐标轴」已勾选显示
  • 图表样式(style=13)没有隐藏坐标轴的默认设置

验证代码(修正后)

以下是调整数据引用范围后的完整代码:

from openpyxl import Workbook
from openpyxl.chart import (
    ScatterChart,
    Reference,
    Series,
)

wb = Workbook()
ws = wb.active

rows = [
    ['Size', 'Batch 1', 'Batch 2'],
    [2, 40, 30],
    [3, 40, 25],
    [4, 50, 30],
    [5, 30, 25],
    [6, 25, 35],
    [7, 20, 40],
]

for row in rows:
    ws.append(row)

chart = ScatterChart()
chart.title = "Scatter Chart"
chart.style = 13
chart.x_axis.title = 'Size'
chart.y_axis.title = 'Percentage'

xvalues = Reference(ws, min_col=1, min_row=2, max_row=7)
for i in range(2, 4):
    values = Reference(ws, min_col=i, min_row=2, max_row=7)  # 修正此处的min_row
    series = Series(values, xvalues, title_from_data=True)
    chart.series.append(series)

ws.add_chart(chart, "A10")

wb.save("scatter.xlsx")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:15:01