excel 你能用Python中的Openpyxl给饼图的元素添加百分比吗?

c0vxltue  于 2022-11-18  发布在  Python
关注(0)|答案(2)|浏览(381)

我在Excel文件中有一个饼图,我用Openpyxl创建。

是否有一种方法可以将百分比添加到饼图中的每个元素,例如下图?

对于更进一步的上下文,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")
hpxqektj

hpxqektj1#

首先,您需要遍历所有变量,通过将数字除以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
5vf7fwbs

5vf7fwbs2#

可以,您可以使用“DataLabelList”向图表添加标签

SOLUTION-按照您的代码,添加导入,然后设置对象:

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')

您还可以选择以下选项:

*pie.dataLabels.showPercent= True #若要显示百分比
*pie.dataLabels.showCatName= True #显示值名称
*pie.dataLabels.showLeaderLines= True #此选项有一个错误,但它应该显示图表上每个标签的引导线。
*pie.dataLabels.position=“outEnd”#设置标签的位置(选项:“最佳拟合”、“b”、“ctr”、“入基线"、”入终点“、”l“、”出终点“、”r“、”t“)
*pie.dataLabels.separator=“\n”#设置标签内的分隔符。
*pie.dataLabels.showVal= True #显示数值。
版本:openpyxl~=3.0.10

我希望我对你有帮助:D

相关问题