使用openpyxl在图表表中切换行/列
我有一个很大的Excel表格,里面有很多数据。由于一些原因,我的数据是以转置的方式排列的:
直方图 | 区间 0 | 区间 1 | 区间 2 | 区间 3 | 区间 4 | 区间 5 |
---|---|---|---|---|---|---|
测试 1 | 0 | 1 | 5 | 2 | 1 | 0 |
测试 2 | 0 | 0 | 1 | 7 | 2 | 0 |
当我把这些数据画图时,我得到的是5组数据,每组有2个值。我希望能得到2组数据,每组有5个点(显示直方图)。这就像在Excel里按一下“切换行/列”按钮一样。不过,由于我有很多图表,手动为每个图表按这个按钮是不现实的。
我该如何在Python中实现这个效果呢?任何帮助都非常感谢。
我做了一个简化版的代码,使用的表格和上面的一样。
我意识到在这种情况下不需要使用多重索引,但在我的完整代码中是需要的。
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()
1 个回答
2
如果你参考一下这个切换行/列的按钮,你可以简单地打开这个from_rows
参数。
chart.add_data(data)
chart.add_data(data, from_rows=True)
输出结果(text.xlsx
):