如何使用Openpyxl在Excel中基于行数据制作饼图?
解决openpyxl基于行数据生成饼图的问题
你的代码核心问题在于add_data默认按列解析数据,而行结构数据需要明确指定读取方向,同时当前的引用范围包含了非数据的表头列("Pie"和"Sold"),导致饼图解析错误。以下是修正后的代码:
from openpyxl import Workbook from openpyxl.chart import PieChart, Reference data = [ ['Pie', 'Apple', 'Cherry', 'Pumpkin', 'Chocolate'], ['Sold', 50, 30, 10, 40] ] wb = Workbook() ws = wb.active for row in data: ws.append(row) pie = PieChart() # 取第一行第2到第5列作为分类标签(Apple、Cherry等) labels = Reference(ws, min_col=2, min_row=1, max_col=5, max_row=1) # 取第二行第2到第5列作为对应数据 data_ref = Reference(ws, min_col=2, min_row=2, max_col=5, max_row=2) # 关键参数:from_rows=True 表示按行读取数据系列 pie.add_data(data_ref, from_rows=True, titles_from_data=False) pie.set_categories(labels) pie.title = "Pies sold by category" ws.add_chart(pie, "D1") wb.save("pie_chart.xlsx")
关键修改说明:
- 缩小
Reference范围,排除第一列的非数据表头,只保留实际分类和数值列 - 通过
from_rows=True告知openpyxl按行结构解析数据 - 设置
titles_from_data=False,避免误将数据行的内容当作图表标题
内容的提问来源于stack exchange,提问作者Alejandropg7
相关产品推荐
相关产品推荐

