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'
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()
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'
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'
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'