def draw_2(self, id): data = libchart.get_chart_data(self.session, self.dt_start, self.dt_end, [[id, datetime.timedelta()]], daily=True) x = [] y = [] for k, v in data.iteritems(): x.append(datetime.datetime.strptime(k, '%Y%m%d0000')) if v[0] is None: y.append(1) else: y.append(v[0]) fig = plt.figure(figsize=(400 / 80, 200 / 80)) ax = fig.add_subplot(1, 1, 1) ax.bar(x, y, width=0.4, align='center', color='blue') ax.grid(True, axis='y') ax.set_ylim(0) locator = AutoDateLocator() formatter = AutoDateFormatter(locator) formatter.scaled[(1.)] = '%m-%d' ax.xaxis.set_major_locator(locator) ax.xaxis.set_major_formatter(formatter) def yaxis_formatter(y, pos): def r(i): i = round(i, 2) if i == int(i): i = int(i) return i if y < 1e3: return int(y) elif y < 1e6: return '%sK' % r(y / 1e3) else: return '%sM' % r(y / 1e6) ax.yaxis.set_major_formatter(FuncFormatter(yaxis_formatter)) for tick in ax.xaxis.get_major_ticks(): tick.label1.set_size(9) for tick in ax.yaxis.get_major_ticks(): tick.label1.set_size(9) f = StringIO.StringIO() fig.savefig(f) plt.close() f.seek(0) return f
def draw_1(self, id): data = libchart.get_chart_data(self.session, self.dt_start, self.dt_end, [[id, datetime.timedelta()]]) x = [] y = [] for k, v in data.iteritems(): x.append(datetime.datetime.strptime(k, '%Y%m%d%H%M')) y.append(v[0]) if y[0] is None: y[0] = 0 if y[-1] is None: y[-1] = 0 fig = plt.figure(figsize=(1024 / 80, 300 / 80)) ax = fig.add_subplot(1, 1, 1) ax.plot(x, y, color='blue') ax.grid(True, axis='y') ax.set_ylim(0) locator = AutoDateLocator() formatter = AutoDateFormatter(locator) formatter.scaled[(1.)] = '%Y-%m-%d' ax.xaxis.set_major_locator(locator) ax.xaxis.set_major_formatter(formatter) for tick in ax.xaxis.get_major_ticks(): tick.label1.set_size(9) for tick in ax.yaxis.get_major_ticks(): tick.label1.set_size(9) f = StringIO.StringIO() fig.savefig(f, bbox_inches='tight') plt.close() f.seek(0) return f
dt_end = datetime.datetime.strptime(request.params['end'], '%Y-%m-%d %H:%M') if dt_end - dt_start < datetime.timedelta(minutes=5): dt_end = dt_start + datetime.timedelta(minutes=5) daily = request.params.get('daily') == 'true' if daily and dt_end - dt_start < datetime.timedelta(days=7): dt_end = dt_start + datetime.timedelta(days=7) except Exception, e: return util.output('error', msg='参数不正确') chart_list = [] for index, id in enumerate(id_list): chart_list.append([id, datetime.timedelta(days=delta_list[index])]) data = libchart.get_chart_data(sakuya_db, dt_start, dt_end, chart_list, daily=daily) result = [] for dt_key, series in data.iteritems(): dt = datetime.datetime.strptime(dt_key, '%Y%m%d%H%M') item = [int(time.mktime(dt.timetuple())) * 1000] #series = [1,2,4,5] item.extend(series) result.append(item) return json.dumps(result) @app.post('/chart/ack/<id:int>') def ack(sakuya_db, id): def error(msg):
dt_end = dt_start + datetime.timedelta(minutes=5) daily = request.params.get('daily') == 'true' if daily and dt_end - dt_start < datetime.timedelta(days=7): dt_end = dt_start + datetime.timedelta(days=7) except Exception, e: return util.output('error', msg='参数不正确') chart_list = [] for index, id in enumerate(id_list): chart_list.append([id, datetime.timedelta(days=delta_list[index])]) data = libchart.get_chart_data(sakuya_db, dt_start, dt_end, chart_list, daily=daily) result = [] for dt_key, series in data.iteritems(): dt = datetime.datetime.strptime(dt_key, '%Y%m%d%H%M') item = [int(time.mktime(dt.timetuple())) * 1000] #series = [1,2,4,5] item.extend(series) result.append(item) return json.dumps(result) @app.post('/chart/ack/<id:int>')