使用 openpyxl 在图表上切换行/列

问题描述 投票:0回答:1

我有一张包含数据的大型 Excel 工作表。由于多种原因,我的数据是以转置方式构建的:

直方图 垃圾箱0 垃圾箱1 垃圾箱2 垃圾箱3 bin 4 垃圾箱5
测试1 0 1 5 2 1 0
测试2 0 0 1 7 2 0

当我绘制这些数据时,我得到了 5 个系列,每个系列中有 2 个值。我想要的是 2

Series
,图中每 5 个点(显示直方图)。这相当于按 Excel 中的“切换行/列” 按钮。不幸的是,不可能为每个图表表手动按下此按钮,因为图表表有很多。

如何在python中实现这种效果? 任何帮助将不胜感激。

我已经制作了代码的简化版本。它使用与上面所示相同的表。
我意识到在这种情况下不需要使用 MultiIndex,但在我的完整代码中,它是必需的。

import pandas as pd
from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference
   
excel_file = 'test.xlsx'
# create and write data
excel_tests_data = [[0, 1, 5, 2, 1, 0],
                    [0, 0, 1, 7, 2, 0]]
df = pd.DataFrame(excel_tests_data)
df.columns=pd.MultiIndex.from_tuples([('bin '+str(i), ) for i in range(6)])
df.to_excel(excel_file, startrow=0, sheet_name='test') 
# open workbook
workbook = load_workbook(excel_file)
worksheet = workbook.worksheets[0]
# create chartsheet
chartsheet = workbook.create_chartsheet()
chartsheet.title = "Testsheet"
chart = LineChart()
data = Reference(worksheet, 
                    min_col = 2,
                    min_row = 3,
                    max_row = 4,
                    max_col = 7)
chart.title = "test"
chart.add_data(data)
chartsheet.add_chart(chart)
# save and close workbook
workbook.save(excel_file)
workbook.close()
python excel charts openpyxl
1个回答
2
投票

如果您参考切换行/列按钮,您只需开启

from_rows
参数即可。

chart.add_data(data)

chart.add_data(data, from_rows=True)

输出(

text.xlsx
):

© www.soinside.com 2019 - 2024. All rights reserved.