Exemplo n.º 1
0
def generar_grafo(queryset, titulo):
    '''Genera un grafo a partir de un queryset o lista de respuestas'''
    data = []
    legends = []
    labels = []
    for respuesta in queryset:
        try:
            data.append(int(respuesta.respuesta.puntaje))
            labels.append(respuesta.pregunta.titulo[:2])
            legends.append(respuesta.pregunta.titulo[:50])
        except:
            pass

    if len(data) > 2:
        data.append(data[0])

    chart = Grafo(600, 350, auto_scale=True, x_range=(0, 5), y_range=(0, 5))
    chart.add_data(data)
    chart.set_title(titulo)
    chart.set_legend(legends)
    chart.set_legend_position('r')
    chart.set_axis_labels('x', labels)
    chart.set_axis_range('y', 0, 5)
    chart.set_line_style(0, 2)
    try:
        return chart.get_url()
    except:
        return '/files/imagen/grafoerror.jpg'
Exemplo n.º 2
0
 def __init__(self,data,imagefileurl,name,label,unit_y,type= 'ggl'):
     self.charttype='polar'
     self.name = name
     self.label = label
     self.type = type
     self.width = 400
     self.height = 300
     (self.min_y,self.max_y,self.scaling_y)=ExtendRange5(0,max([max(d) for d in data]))
     chart = RadarChart(self.width,self.height)
     self.data = data
     for d in data:
         chart.add_data(d)
     chart.set_colours(['CC0000','339900']) #,'FFFFFF'
     #chart.set_legend(['max','mean','Grid: %.2f %s' % (scaling_y,unit_y)])
     self.gridsize = '%.2f %s' % (self.scaling_y,unit_y)
     if len(data)==2:
         chart.set_legend(['max','mean'])
     chart.set_axis_labels(Axis.BOTTOM, [SelectValuesModulo(i,30) for i in range(0,359)])
     for y in MyRange(self.scaling_y,self.max_y,self.scaling_y):
         if not self.max_y==0.0:
             chart.add_marker(0,float(y)/self.max_y,'h','AAAAAA',1,-1)
     if len(chart.markers)>5:
         # goole chart doesn't support more than 6 markers
         chart.markers = chart.markers[0:5]
     #if len(chart.markers)<2050:
     #chart.markers.append(('B', 'CC000080', '0', '1.0', '0'))
     chart.markers.append(('B', 'FFEE0080', '1', '1.0', '0'))
     #chart.add_fill_simple('FFDD00')
     #chart.add_horizontal_range('E5ECF9',0,30)
     #index = chart.set_axis_labels(Axis.BOTTOM, range(0,360,30))
     #chart.set_axis_positions(index, range(0,360,30))
     self.imagefileurl = chart.get_url()
Exemplo n.º 3
0
def generar_grafo(queryset, titulo):
    '''Genera un grafo a partir de un queryset o lista de respuestas'''
    data = []
    legends = []
    labels = []
    for respuesta in queryset:
        try:
            data.append(int(respuesta.respuesta.puntaje))
            labels.append(respuesta.pregunta.titulo[:2])
            legends.append(respuesta.pregunta.titulo[:50])
        except:
            pass

    if len(data) > 2:
        data.append(data[0])

    chart = Grafo(600, 350, auto_scale=True, x_range=(0,5), y_range=(0,5))
    chart.add_data(data)
    chart.set_title(titulo)
    chart.set_legend(legends)
    chart.set_legend_position('r')
    chart.set_axis_labels('x', labels)
    chart.set_axis_range('y', 0, 5)
    chart.set_line_style(0, 2)
    try:
        return chart.get_url()
    except:
        return '/files/imagen/grafoerror.jpg'
Exemplo n.º 4
0
def generar_grafo_radar_norm(titulo, filas, ejes):
    chart = Grafo(600, 350, auto_scale=True, x_range=(0,100), y_range=(0,100))
    #normalizamos valores
    saca_porcentaje = lambda x : (float(x[0])/x[1]) * 100
    fila_normalizada = map(saca_porcentaje, filas)
    fila_normalizada.append(fila_normalizada[0])
    chart.add_data(fila_normalizada)
    chart.set_title(titulo)
    chart.set_axis_labels('x', range(1, len(ejes)+ 1))
    legends = [(str(i+1) + '-' + j) for i, j in enumerate(ejes)] 
    chart.set_legend(legends)
    chart.set_axis_range('y', 0, 100)
    chart.set_line_style(0, 2)
    try:
        return chart.get_url()
    except:
        return '/files/imagen/grafoerror.jpg'
Exemplo n.º 5
0
def generar_grafo_radar_norm(titulo, filas, ejes):
    chart = Grafo(600,
                  350,
                  auto_scale=True,
                  x_range=(0, 100),
                  y_range=(0, 100))
    #normalizamos valores
    saca_porcentaje = lambda x: (float(x[0]) / x[1]) * 100
    fila_normalizada = map(saca_porcentaje, filas)
    fila_normalizada.append(fila_normalizada[0])
    chart.add_data(fila_normalizada)
    chart.set_title(titulo)
    chart.set_axis_labels('x', range(1, len(ejes) + 1))
    legends = [(str(i + 1) + '-' + j) for i, j in enumerate(ejes)]
    chart.set_legend(legends)
    chart.set_axis_range('y', 0, 100)
    chart.set_line_style(0, 2)
    try:
        return chart.get_url()
    except:
        return '/files/imagen/grafoerror.jpg'