def animalNum(stats): chart = XYLineChart(400, 300) max_wx = 0 for creature in ['rabbit', 'wolf']: WX = [] WY = [] count = 0 for t in sorted(stats[creature].keys()): WX.append(t) for event in stats[creature][t]['event']: if event == LiveLog.BIRTH: count += 1 else: count -= 1 # print count, creature, str(stats[creature][t]['event']) WY.append(count) chart.add_data(WX) chart.add_data(WY) max_wx = max(max_wx, max(WX)) chart.set_title("Population size") chart.set_colours(['ff0000', '0000ff']) chart.set_legend(['rabbits', 'wolves']) chart.set_grid(0, 10, 3, 3) chart.set_axis_labels(Axis.BOTTOM, range(0, max_wx + 1, 100)) chart.download('number.png')
def xy_rect(): chart = XYLineChart(settings.width, settings.height, x_range=(0, 100), y_range=(0, 100)) chart.add_data([10, 90, 90, 10, 10]) chart.add_data([10, 10, 90, 90, 10]) chart.download('line-xy-rect.png')
def xy_random(): chart = XYLineChart(settings.width, settings.height, x_range=(0, 100), y_range=(0, 100)) chart.add_data(helper.random_data()) chart.add_data(helper.random_data()) chart.download('line-xy-random.png')
class Graph(): colours = [] legend = [] max_wx = 0 max_wy = 0 min_wy = 4000000000 label_suffix = " MB" scale = 1024*1024 def __init__(self): self.chart = XYLineChart(750, 400) def set_config(self, config): self.label_suffix = config.get("general", "label_suffix") self.scale = int(config.get("general", "scale")) def add_serie(self, WX, WY, colour, descr): self.chart.add_data(WX) self.chart.add_data(WY) self.colours.append(colour) self.legend.append(descr) self.max_wx = max(self.max_wx, max(WX)) self.max_wy = max(self.max_wy, max(WY)) self.min_wy = min(self.min_wy, min(WY)) def set_title(self, title): self.chart.set_title(title) def make_chart(self, name): densX = self.max_wx / 15 wy_max_lab = int(self.max_wy / self.scale + 1) wy_min_lab = int(max(self.min_wy / self.scale - 1, 0)) densY = max((wy_max_lab - wy_min_lab) / 10, 1) self.chart.set_axis_labels(Axis.BOTTOM, range(0, self.max_wx + 1, densX)) self.chart.set_axis_labels(Axis.LEFT, self.__make_Ylabels(wy_min_lab, wy_max_lab, int(densY))) self.chart.y_range = (wy_min_lab * self.scale, wy_max_lab * self.scale) self.chart.set_legend(self.legend) self.chart.set_colours(self.colours) self.chart.set_grid(15, 10, 1, 5) self.chart.download("%s.png" % (name)) def __make_Ylabels(self, wy_min_lab, wy_max_lab, densY): result = [] for i in range(wy_min_lab, wy_max_lab, densY): result.append("%d%s" % (i, self.label_suffix)) return result
def xy_circle(): chart = XYLineChart(settings.width, settings.height) steps = 40 xradius = 25 yradius = 45 xmid = 50 ymid = 50 xlist = [] ylist = [] for angle in xrange(0, steps + 1): angle = float(angle) / steps * math.pi * 2 xlist.append(math.cos(angle) * xradius + xmid) ylist.append(math.sin(angle) * yradius + ymid) chart.add_data(xlist) chart.add_data(ylist) chart.download('line-xy-circle.png')
def genChart(width, height, data, ind, outfile, title): # this is designed to take a list, the value of the wshed, and save the output graph mn = min(data) mx = max(data) chart = XYLineChart(width, height, title=title, x_range=(0, len(data)), y_range=(0, mx)) chart.set_colours(["3072F3", "FF0000"]) chart.set_line_style(0, 3) chart.set_grid(20, 25, 1, 5) # set up axis and labels left_axis = chart.set_axis_labels(Axis.LEFT, [" Lowest", "Total Toxicity ", " Highest"]) chart.set_axis_style(left_axis, "202020", font_size=11, alignment=0) # add x and y data for distribution line chart.add_data(range(len(data))) chart.add_data(data) # add marker to position of ind chart.add_marker(0, ind, "d", "FF0000", 10) chart.download(outfile) return outfile
def grafico(fileName,datax,datay): """Graphical generate""" droid.dialogCreateAlert("Gerando Grafico","Aguarde a geracao do gráfico") droid.dialogShow() if(len(datax) != 0): xmax, xmin = MaxMindado(datax) ymax, ymin = MaxMindado(datay) if(xmax != xmin): deltax = (xmax -xmin)/10.0 else: droid.makeToast("Erro: falta definir eixo x") return if(ymax != ymin): deltay = (ymax - ymin)/10.0 else: droid.makeToast("Erro: Falta definir dados de y") return left_axis = [datax[0] + deltax*i for i in range(11)] bottom_axis = [datay[0] + deltay*i for i in range(11)] chart = XYLineChart(500, 400, x_range=(xmin,xmax), y_range=(ymin,ymax)) chart.add_data(datax) chart.add_data(datay) chart.set_axis_labels(Axis.LEFT,[ymin,ymax]) chart.set_axis_labels(Axis.BOTTOM,[xmin,xmax]) chart.download('/mnt/sdcard/graphicospeech/'+fileName) droid.fullSetProperty("image1","src",\ "file:///mnt/sdcard/graphicospeech/"+fileName) droid.dialogDismiss()
def xy_rect(): chart = XYLineChart(settings.width, settings.height, x_range=(0, 100), y_range=(0, 100)) chart.add_data([10, 90, 90, 10, 10]) chart.add_data([10, 10, 90, 90, 10]) chart.download('line-xy-rect.png')
def xy_random(): chart = XYLineChart(settings.width, settings.height, x_range=(0, 100), y_range=(0, 100)) chart.add_data(helper.random_data()) chart.add_data(helper.random_data()) chart.download('line-xy-random.png')
chart.add_data(x_values) chart.add_data([x[1] for x in rows]) chart.add_data(x_values) chart.add_data([0] * len(x_values)) chart.set_colours(['000000', 'ff0000', '000000']) chart.add_fill_range('99ccff', 0, 2) axis = range(0, 420, 420 / 6) axis[-1] = 420 chart.set_axis_labels(Axis.LEFT, map(str, axis)) axis = [datetime.combine(start, time())] step = (end - start) / 15 end = datetime.combine(end, time()) while axis[-1] < end: axis.append(axis[-1] + step) axis[-1] = end for ix, d in enumerate(axis): axis[ix] = d.strftime('%d %b') chart.set_axis_labels(Axis.BOTTOM, axis) for pos in deadlines.values(): p = float(pos) / len(rows) chart.add_vertical_range('9966cc', p, p + 0.004) chart.download('attendees.png')
def xy_random(): chart = XYLineChart(width, height, x_range=(0, 100), y_range=(0, 100)) chart.add_data(random_data()) chart.add_data(random_data()) chart.download('line-xy-random.png')
def main(): parseLive() stats = {} time_stats = {} fp = open("genetics.log", "r") lines = fp.readlines() header = [h.strip() for h in lines[0].split(",")] for line in lines[1:]: data = line.split(",") type = data[0].strip() generation = int(data[1]) time = int(float(data[2]) / 10) * 10 if type not in stats: stats[type] = {} time_stats[type] = {} if generation not in stats[type]: stats[type][generation] = {} if time not in time_stats[type]: time_stats[type][time] = {} d = stats[type][generation] t = time_stats[type][time] for phene, value in zip(header[3:], data[3:]): if phene not in d: d[phene] = [] d[phene].append(float(value)) if phene not in t: t[phene] = [] t[phene].append(float(value)) for s, name in [(stats, "generation"), (time_stats, "time")]: for feature in Phenotype.VALID: chart = XYLineChart(400, 300) max_wx = 0 for creature in ['rabbit', 'wolf']: WX = [] WYavg = [] WYmin = [] WYmax = [] for g, phenes in sorted(s[creature].items()): WX.append(g) WYavg.append(sum(phenes[feature]) / len(phenes[feature])) WYmin.append(min(phenes[feature])) WYmax.append(max(phenes[feature])) if len(WX) < 2: WX.append(2) chart.add_data(WX) chart.add_data(WYmin) chart.add_data(WX) chart.add_data(WYmax) chart.add_data(WX) chart.add_data(WYavg) max_wx = max(max_wx, max(WX)) chart.set_title("Phenotype: %s / %s" % (feature, name)) chart.set_colours(['ffe9bf', 'daffbf', 'ff0000', 'ebbfff', 'bffff5', '0000ff']) chart.set_legend(['rabbits-min', 'rabbits-max', 'rabbits-avg', 'wolves-min', 'wolves-max', 'wolves-avg']) chart.set_grid(0, 10, 3, 3) if name == "generation": chart.set_axis_labels(Axis.BOTTOM, range(0, max_wx + 1, 5)) else: chart.set_axis_labels(Axis.BOTTOM, range(0, max_wx + 1, 100)) chart.download("%s-%s.png" % (name, feature))
chart.add_data([ x[1] for x in rows ]) chart.add_data(x_values) chart.add_data([ 0 ] * len(x_values)) chart.set_colours(['000000', 'ff0000', '000000']) chart.add_fill_range('99ccff', 0, 2) axis = range(0, 420, 420 / 6) axis[-1] = 420 chart.set_axis_labels(Axis.LEFT, map(str, axis)) axis = [ datetime.combine(start, time()) ] step = (end - start) / 15 end = datetime.combine(end, time()) while axis[-1] < end: axis.append(axis[-1] + step) axis[-1] = end for ix, d in enumerate(axis): axis[ix] = d.strftime('%d %b') chart.set_axis_labels(Axis.BOTTOM, axis) for pos in deadlines.values(): p = float(pos) / len(rows) chart.add_vertical_range('9966cc', p, p + 0.004) chart.download('attendees.png')