Exemplo n.º 1
0
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')
Exemplo n.º 2
0
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')
Exemplo n.º 3
0
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
Exemplo n.º 5
0
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')
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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()
Exemplo n.º 8
0
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')
Exemplo n.º 9
0
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')
Exemplo n.º 10
0
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')
Exemplo n.º 11
0
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')
Exemplo n.º 12
0
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')