我有一张包含数据的大型 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()
如果您参考切换行/列按钮,您只需开启
from_rows
参数即可。
chart.add_data(data)
chart.add_data(data, from_rows=True)
输出(
text.xlsx
):