使用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
相关产品推荐
相关产品推荐

