我在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")
2条答案
按热度按时间hpxqektj1#
首先,您需要遍历所有变量,通过将数字除以100将数字更改为小数百分比。然后将单元格数字格式更改为百分比。
然后,您需要生成数据标签,并使用方向的第一个字母移动图例位置。
5vf7fwbs2#
可以,您可以使用“DataLabelList”向图表添加标签
SOLUTION-按照您的代码,添加导入,然后设置对象:
您还可以选择以下选项:
*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