ReportLab 饼图:在标签中显示数量和占比
要在 ReportLab 的 Pie 类中同时显示数量和占比,可以使用以下步骤:
-
在 Pie 类的
data属性中,将每个数据点的值改为一个包含数量和占比的元组,例如:[(10, '20%'), (20, '40%'), (15, '30%'), (5, '10%')] -
在 Pie 类的
draw方法中,添加一个 for 循环来遍历data中的每个数据点,并使用drawString方法在饼图中心处显示数量和占比。 -
在
drawString方法中,将数量和占比按照需要的格式进行拼接,例如:f'{data[i][0]} ({data[i][1]})'
以下是示例代码:
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.piecharts import Pie
from reportlab.lib.colors import Color, red, blue, green, yellow
data = [(10, '20%'), (20, '40%'), (15, '30%'), (5, '10%')]
drawing = Drawing(400, 400)
pie = Pie()
pie.x = 150
pie.y = 150
pie.width = 140
pie.height = 140
pie.data = data
pie.labels = [f'{data[i][0]} ({data[i][1]})'' for i in range(len(data))]
pie.slices.strokeWidth = 0.5
pie.slices[0].popout = 10
pie.slices[0].strokeWidth = 2
pie.slices[0].strokeDashArray = [2,2]
pie.slices[0].labelRadius = 1.75
pie.slices[0].fontColor = yellow
pie.slices[0].fontSize = 14
pie.slices[0].fillColor = red
pie.slices[1].fillColor = blue
pie.slices[2].fillColor = green
pie.slices[3].fillColor = yellow
drawing.add(pie)
drawing.save(formats=['pdf'], outDir='.', fnRoot='pie')
运行以上代码后,生成的饼图将在每个数据点的标签中显示数量和占比。
原文地址: https://www.cveoy.top/t/topic/oNI7 著作权归作者所有。请勿转载和采集!