使用openpyxl生成转置数据的2D面积图表遇问题求助
解决转置数据生成2D面积图的问题
当数据是转置格式(系列按行排列、类别按列排列)时,需要调整Reference的选取范围,并设置add_data的from_rows参数为True,让openpyxl按行识别数据系列。
调整后的代码示例
假设你的数据结构匹配转置格式:
- 第1行:所有类别名称(列2到列7)
- 第2行:系列1名称(列1)+ 对应类别的数据(列2到列7)
- 第3行:系列2名称(列1)+ 对应类别的数据(列2到列7)
修改后的代码如下:
from openpyxl.chart import AreaChart, Reference # ws为你的工作表对象 cats = Reference(ws, min_col=2, min_row=1, max_col=7) # 选取第1行的类别区域 data = Reference(ws, min_col=1, min_row=2, max_row=3, max_col=7) # 选取包含系列名和数据的行区域 chart = AreaChart() # 开启from_rows=True,让程序按行读取系列数据 chart.add_data(data, titles_from_data=True, from_rows=True) chart.set_categories(cats) # 将图表插入工作表指定位置 ws.add_chart(chart, "A10")
关键调整说明
from_rows=True:默认openpyxl按列读取数据系列,转置后系列在行,必须开启这个参数才能正确识别每行作为一个独立数据系列。- 类别范围
cats:指向转置后存储所有类别名称的单元格区域(即原数据的表头行)。 - 数据范围
data:包含每个系列的名称和对应数据,titles_from_data=True会自动将每行的第一列内容设为系列标题。
问题排查
如果图表仍显示异常,可以检查:
cats是否完整覆盖了所有类别单元格data是否包含了所有系列的名称和对应数据- 确认
from_rows参数是否正确设置为True
内容的提问来源于stack exchange,提问作者sebo
相关产品推荐
相关产品推荐

