def generateActivityInfoForGroup(self, groupName):
timestampNow = int(time())
timestampYesterday = timestampNow - self.timestampSubtract
records = list(self.coll.find({ 'to': groupName, 'timestamp': { '$gt': timestampYesterday } }).sort([ ('timestamp', DESCENDING) ]))
fn = self.generateTmpFileName()
# Get histogram for activity
hist, bins = np.histogram([ x['timestamp'] for x in records ], bins=24)
center = (bins[:-1] + bins[1:]) / 2
datex = [ datetime.fromtimestamp(x) for x in center ]
pp.figure(figsize=(6,14))
ax = pp.subplot(2, 1, 1)
pp.plot_date(datex, hist, '.-')
pp.gcf().autofmt_xdate()
pp.xlabel(u'??????', fontproperties=self.prop)
pp.ylabel(u'??????', fontproperties=self.prop)
ax.xaxis.set_major_formatter(DateFormatter('%m-%d %H:%M'))
# Get bar chart for active users
pieDat = Counter([ x['from'] for x in records ])
pieDatSorted = sorted([ (k, pieDat[k]) for k in pieDat ],key=lambda x: x[1], reverse=True)
if len(pieDatSorted) > self.maxActivityInfoCount:
pieDatSorted = pieDatSorted[:self.maxActivityInfoCount]
ax = pp.subplot(2, 1, 2)
width = 0.7
x = np.arange(len(pieDatSorted)) + width
xText = [ xx[0] for xx in pieDatSorted ]
y = [ xx[1] for xx in pieDatSorted ]
pp.bar(x, y, width)
a = pp.gca()
a.set_xticklabels(a.get_xticks(), { 'fontProperties': self.prop })
pp.xticks(x, xText, rotation='vertical')
pp.xlabel(u'??', fontproperties=self.prop)
pp.ylabel(u'24?????', fontproperties=self.prop)
ax.set_xlim([ 0, len(xText) + 1 - width ])
pp.margins(0.2)
pp.savefig(fn)
return fn
评论列表
文章目录