После просмотра исходного кода я нашел решение. pie.add_data
по умолчанию обрабатывает каждый столбец как ряд данных. Итак, мне нужно добавить значение from_rows
в pie.add_data
, чтобы выбрать строку в качестве ряда данных, и пришлось обновить min_col
в data = Reference(ws, min_col=1, min_row=2, max_col=4)
. Ниже приведен желаемый рабочий код:
from openpyxl import Workbook
from openpyxl.chart import (
PieChart,
ProjectedPieChart,
Reference
)
from openpyxl.chart.series import DataPoint
data = [
['Pie', 'Sold','Added','New','extra'],
['Apple', 50,3,4,5],
['Cherry', 30,5,6,7],
['Pumpkin', 10,7,8,99],
['Chocolate', 40,10,29,23],
]
wb = Workbook()
ws = wb.active
for row in data:
ws.append(row)
pie = PieChart()
labels = Reference(ws, min_row=1, min_col=2, max_col=4)
data = Reference(ws, min_col=1, min_row=2, max_col=4)
#data = Reference(ws, range_string='Sheet!$B$2:$D$2')
pie.add_data(data, from_rows=2,titles_from_data=True)
pie.set_categories(labels)
pie.title = "Pies sold by category"
ws.add_chart(pie, "H2")
ws = wb.create_sheet(title="Projection")
wb.save("pie.xlsx")