def graph(results): output = [] sorted_keys = results.keys() sorted_keys.sort() for test in sorted_keys: data = results[test] datalist = [data[host[0]] for host in HOSTS] plots = [] dates = [] max_points = max([len(d) for d in datalist]) for hostlist in datalist: hostplots = [] hostdates = [] for hostitem in hostlist: hostplots.append(hostitem[0]) hostdates.append(hostitem[1]) if len(hostplots) < max_points: hostplots.extend([hostlist[-1][0] for i in xrange(max_points-len(hostplots))]) plots.append(hostplots) dates.append(hostdates) first_day = dates[0][0] last_day = dates[0][-1] delta = last_day - first_day diff = delta.days*60*60*24 + delta.seconds days = [] days.append(first_day.strftime("%a")) days.append((first_day+timedelta(seconds=int(diff*0.2))).strftime("%a")) days.append((first_day+timedelta(seconds=int(diff*0.4))).strftime("%a")) days.append((first_day+timedelta(seconds=int(diff*0.6))).strftime("%a")) days.append((first_day+timedelta(seconds=int(diff*0.8))).strftime("%a")) days.append(last_day.strftime("%a")) maximum = max([max(d) for d in plots]) minimum = min([min(d) for d in plots]) def scale(value, scale=4095): return (value - minimum) * scale / abs(maximum - minimum) scaled_plots = [] for hostplots in plots: scaled_plots.append([scale(v) for v in hostplots]) g = Line(scaled_plots, encoding='extended') g.legend(*[host[1] for host in HOSTS]) g.legend_pos('b') g.color("edc240", "afd8f8", "cb4b4b", "4da74d", "f8afe8", "4066ed", ) for i in range(3): g.line(2.5, 1, 0) g.size(500, 300) #g.scale(minimum, maximum) g.axes.type('xy') labels = range(minimum, maximum, (maximum-minimum)/5) g.axes.label(0, *days) g.axes.label(1, *labels) #g.show() print test print g output.append("%s" % g)
def legend(self): # Add legend to the data set which follows collors G = Line(['FOETHECat', 'leafgreen', 'IRON4YOUs']) G.color('ff0000', '00ff00', '0000ff') G.legend('Animals', 'Vegetables', 'Minerals') G.axes.type('y') return G
def margins_test(): G = Line([[8,12,11,16,22],[7,8,10,12,19,23]], encoding='simple') #实际数据 G.size(1000, 200) #整个图大小 G.label(1,5,10,20,40,60,100,160,260,420,68,1100,1780) #下标量 G.fill('bg', 's', 'e0e0e0') #背景 G.color('black', 'blue') #线颜色 G.margin(20,20,20,30,80,20) #图位置 G.legend('Merge', 'BigTable') #线标签 print G
def line_test(): G = Line([[0,10,20], [0,20,25]], encoding='text') #数据 simple模式和text模式 G.size(1000, 200) #整个图的大小 G.axes.type('xy') #XY两轴,可用xyz G.axes.label(0, 30) #设置0(x)轴标签 #G.axes.label(1, '5', '10', '15', '20', '25', '30') #设置1(Y)轴标签 #G.axes.range(0, 0, 5, 1) #设置0(x)轴范围 G.axes.range(1, 0, 50) #设置1(Y)轴范围 G.scale(0, 50) #设置放大比率,最小最大 G.fill('bg', 's', 'e0e0e0') #背景色 G.color('black', 'blue') #两条线的颜色 G.margin(20, 20, 20, 30, 80, 20) #表在图中的位置 G.legend('Merge', 'BigTable') #两标签名字 G.show() #网页显示
def graph(results): output = [] sorted_keys = results.keys() sorted_keys.sort() for test in sorted_keys: data = results[test] datalist = [data[host[0]] for host in HOSTS] plots = [] dates = [] max_points = max([len(d) for d in datalist]) for hostlist in datalist: hostplots = [] hostdates = [] for hostitem in hostlist: hostplots.append(hostitem[0]) hostdates.append(hostitem[1]) if len(hostplots) < max_points: hostplots.extend([ hostlist[-1][0] for i in xrange(max_points - len(hostplots)) ]) plots.append(hostplots) dates.append(hostdates) first_day = dates[0][0] last_day = dates[0][-1] delta = last_day - first_day diff = delta.days * 60 * 60 * 24 + delta.seconds days = [] days.append(first_day.strftime("%a")) days.append( (first_day + timedelta(seconds=int(diff * 0.2))).strftime("%a")) days.append( (first_day + timedelta(seconds=int(diff * 0.4))).strftime("%a")) days.append( (first_day + timedelta(seconds=int(diff * 0.6))).strftime("%a")) days.append( (first_day + timedelta(seconds=int(diff * 0.8))).strftime("%a")) days.append(last_day.strftime("%a")) maximum = max([max(d) for d in plots]) minimum = min([min(d) for d in plots]) def scale(value, scale=4095): return (value - minimum) * scale / abs(maximum - minimum) scaled_plots = [] for hostplots in plots: scaled_plots.append([scale(v) for v in hostplots]) g = Line(scaled_plots, encoding='extended') g.legend(*[host[1] for host in HOSTS]) g.legend_pos('b') g.color( "edc240", "afd8f8", "cb4b4b", "4da74d", "f8afe8", "4066ed", ) for i in range(3): g.line(2.5, 1, 0) g.size(500, 300) #g.scale(minimum, maximum) g.axes.type('xy') labels = range(minimum, maximum, (maximum - minimum) / 5) g.axes.label(0, *days) g.axes.label(1, *labels) #g.show() print test print g output.append("%s" % g)