我用Openpyxl创建了excel文件中的饼图。
是否有一种方法可以将百分比添加到饼图中的每个元素,例如,下面的图像?
对于进一步的上下文,excel文件是用Python创建的。我隔离了从代码中创建饼图的代码段:
from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference
imd=30
lid=18.5
cad=10
wad=12
rud=16.5
sad=0
ht=12
othd=40
wb = Workbook()
sheet = wb.active
sheet.title="Data"
fi,ft=[],[]
sheet['C11'] = imd
sheet['C12'] = lid
sheet['C13'] = cad
sheet['C14'] = wad
sheet['C15'] = rud
sheet['C16'] = sad
sheet['C17'] = ht
sheet['C18'] = othd
sheet2 = wb.create_sheet()
sheet2.title='Charts'
pie=PieChart()
labels = Reference(sheet, min_col=1, min_row=11, max_row=18)
data = Reference(sheet, min_col=3, min_row=10, max_row=18)
pie.add_data(data, titles_from_data=True)
pie.set_categories(labels)
pie.title = "Pie Chart"
sheet2.add_chart(pie, 'A1')
wb.save("temp.xlsx")
发布于 2022-11-11 10:58:55
是的,您可以使用"DataLabelList“将标签添加到图表中。
解决方案--按照代码添加导入,然后设置对象:
from openpyxl.chart.label import DataLabelList
pie=PieChart()
labels = Reference(sheet, min_col=1, min_row=11, max_row=18)
data = Reference(sheet, min_col=3, min_row=10, max_row=18)
pie.add_data(data, titles_from_data=True)
pie.set_categories(labels)
pie.title = "Pie Chart"
#Set the DataLabelList.
pie.dataLabels = DataLabelList()
#Show the percent on the labels.
pie.dataLabels.showPercent = True
sheet2.add_chart(pie, 'A1')
此外,您还有以下选项:
版本: openpyxl~=3.0.10
我希望我帮助过你。
发布于 2022-10-31 15:02:01
首先,您需要遍历所有变量,将数字除以100,从而将数字更改为小数点百分比。然后将单元格号格式更改为百分比。
sheet['C11'] = imd/100 # convert to decimal
sheet['C11'].number_format = '0.0%' # change to percentage
然后,您需要生成数据标签,并使用方向的第一个字母移动图例位置。
pie.dataLabels = DataLabelList() # generate data labels
pie.dataLabels.showVal = True # shows labels
pie.legend.position = 't' # move legend to top of chart
https://stackoverflow.com/questions/74264322
复制相似问题