def getContents(self): pie = self.pie data = [v for v in pie.data] total = sum(data) ndata = len(data) lv = [' %.2f%%' % v for v in data] labels = self._labels[:] labels += max(len(lv) - len(labels), 0) * [''] labels = [lab + lv[i] for i, lab in enumerate(labels)] fontName = self._fontName legend = self.legend legend.fontName = fontName colors = list(map(toColor, self._colors)) ncolors = len(colors) colors += [ Whiter(colors[i % ncolors], 0.7**(1 + i // ncolors)) for i in range(max(ndata - ncolors, 0)) ] for i in range(ndata): self.pie.slices[i].fillColor = colors[i] for i in range(ndata): legend.colorNamePairs.append((colors[i], labels[i])) if total < 99.9: data.append(100 - total) if total < 99.9: self.pie.slices[ndata].fillColor = None if total < 99.9: legend.colorNamePairs.append( (Auto(obj=self.pie), 'Unknown %.2f%%' % (100 - total))) self.pie.data = data return Drawing.getContents(self)