Beispiel #1
0
 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)