def createEventFrequencyPlot(self, title, events, id=0): # Count the number of each event eventFrequency = Collections.DefaultDict(lambda: 0) for event in events: eventFrequency[event.name] += 1 items = eventFrequency.items() items.sort(key=lambda f: -f[1]) funcNames = [f[0] for f in items] funcFreq = [f[1] for f in items] # Create a bar charts and add a text describing the event to each bar pylab.figure() pylab.yticks([]) pylab.ylim(len(funcNames), 0) rects = pylab.barh(range(len(funcNames)), funcFreq, color=self.primaryColor) for name, rect in zip(funcNames, rects): pylab.text(rect.get_x() + rect.get_width(), rect.get_y() + rect.get_height(), " " + name, fontsize=8) fn = os.path.join(self.path, title.lower().replace(" ", "_") + "%03d.png" % id) pylab.savefig(fn) pylab.close() section = Report.Section(title) section.create(Report.Image, fn) return section
def testDefaultDict(self): d = Collections.DefaultDict(lambda: 1) assert d["foo"] == 1 d["foo"] = 2 assert d["foo"] == 2
def __init__(self, items=None): self.freq = Collections.DefaultDict(lambda: 0) if items: for item in items: self.add(item)