def chart_image_goal(request, project_key, goal_key): project = get_object_or_404(Project, key=project_key) goal = get_object_or_404(ProjectGoal, project_id=project.id, key=goal_key) chart_size, pledges_rgbas, redonations_rgbas, other_sources_rgbas, background_rgbas = _parse_request_chart_params(request) chart_colors = [pledges_rgbas, redonations_rgbas, other_sources_rgbas, background_rgbas] if chart_size in CHART_PARAMS['goal']: chart_image_width = CHART_PARAMS['goal'][chart_size]['w'] chart_image_height = CHART_PARAMS['goal'][chart_size]['h'] else: chart_image_width = chart_image_height = int(chart_size) chart_relpathname = _get_chart_relative_filename(project_key, chart_size, goal_id=goal.id) chart_abspathname = MEDIA_ROOT+chart_relpathname if goal.amount > 0: pledges_degrees = min(TOTAL_DEGREES, Decimal(TOTAL_DEGREES * ((goal.getTotalPledges()) / goal.amount)).quantize(Decimal('1')) ) other_sources_degrees = min((TOTAL_DEGREES-pledges_degrees), Decimal(TOTAL_DEGREES * ((goal.getTotalOtherSources()) / goal.amount)).quantize(Decimal('1')) ) else: pledges_degrees = 0 other_sources_degrees = 0 if pledges_degrees == 0 and other_sources_degrees == 0 : pledges_degrees = MINIMAL_DEFAULT_PLEDGES_DEGREES other_sources_degrees = MINIMAL_DEFAULT_OTHER_SOURCES_DEGREES chart_data = {'1' : pledges_degrees, '2' : 0, # redonations never apply to goals '3' : other_sources_degrees, '4' : max(0, (TOTAL_DEGREES-(pledges_degrees+other_sources_degrees))) } cairoplot.donut_plot(name=chart_abspathname, data=chart_data, width=chart_image_width, height=chart_image_height, background='transparent', inner_radius=CHART_INNER_RADIUS, colors=chart_colors, radius_list=CHART_RADIUS_LIST) response = HttpResponse(mimetype='image/'+CHART_IMAGE_TYPE) response['Content-Length'] = os.path.getsize(chart_abspathname) response.write(open(chart_abspathname, 'r').read()) return response
def PlotVirusTotal(self): ####New Graphics###### if self.genreport["VirusTotal"]["results"]!=False: NoDetected = int(self.genreport["VirusTotal"]["total_av"]) - int(self.genreport["VirusTotal"]["positives"]) data = {"No detected" : int(NoDetected), "Detected" : int(self.genreport["VirusTotal"]["positives"])} background = cairo.LinearGradient(300, 0, 300, 400) #background.add_color_stop_rgb(0,0,0.4,0) #background.add_color_stop_rgb(1.0,0,0.1,0) colors = [ (73.0/255, 233.0/255, 163.0/255), (1.0,0.0,0.0), (195.0/255, 255.0/255, 140.0/255), (5.0/255, 3.0/255, 3.0/255), (2.0/255, 255.0/255, 1.0/255) ] cairoplot.donut_plot(os.path.join(COLLECTOR_ROOT,"charts","VirusTotal.png"), data, 470, 170, background = background, gradient = True, shadow = True, colors = colors, inner_radius = 0.3)
def PlotIPReputation(self): tempTable = {} for ip,rep,status in self.ips: if status["detected"] >0: log.info("the IP %s is detected in %i list and no detected in %i" %(ip,status["detected"],status["nodetected"])) data = {"No detected" : int(status["nodetected"]), "Detected" : int(status["detected"])} background = cairo.LinearGradient(300, 0, 300, 400) #background.add_color_stop_rgb(0,0,0.4,0) #background.add_color_stop_rgb(1.0,0,0.1,0) colors = [ (73.0/255, 233.0/255, 163.0/255), (1.0,0.0,0.0), (195.0/255, 255.0/255, 140.0/255), (5.0/255, 3.0/255, 3.0/255), (2.0/255, 255.0/255, 1.0/255) ] cairoplot.donut_plot(os.path.join(COLLECTOR_ROOT,"charts","{0}.png".format(ip)), data, 470, 170, background = background, gradient = True, shadow = True, colors = colors, inner_radius = 0.3)
def chart_image_need(request, project_key, need_id): need = get_object_or_404(ProjectNeed, pk=need_id) chart_size, pledges_rgbas, redonations_rgbas, other_sources_rgbas, background_rgbas = _parse_request_chart_params(request) chart_colors = [pledges_rgbas, redonations_rgbas, other_sources_rgbas, background_rgbas] if chart_size in CHART_PARAMS['need']: chart_image_width = CHART_PARAMS['need'][chart_size]['w'] chart_image_height = CHART_PARAMS['need'][chart_size]['h'] else: chart_image_width = chart_image_height = int(chart_size) chart_relpathname = _get_chart_relative_filename(project_key, chart_size, need_id=need_id) chart_abspathname = MEDIA_ROOT+chart_relpathname pledges_degrees = min(TOTAL_DEGREES, Decimal(TOTAL_DEGREES * ((need.getPledgesMonthlyTotal()) / need.amount)).quantize(Decimal('1') )) redonations_degrees = min((TOTAL_DEGREES-pledges_degrees), Decimal(TOTAL_DEGREES * ((need.getRedonationsMonthlyTotal()) / need.amount)).quantize(Decimal('1')) ) other_sources_degrees = min((TOTAL_DEGREES-(pledges_degrees+redonations_degrees)), Decimal(TOTAL_DEGREES * ((need.getOtherSourcesMonthlyTotal()) / need.amount)).quantize(Decimal('1')) ) if pledges_degrees == 0 and redonations_degrees == 0 and other_sources_degrees == 0 : pledges_degrees = MINIMAL_DEFAULT_PLEDGES_DEGREES redonations_degrees = MINIMAL_DEFAULT_REDONATIONS_DEGREES other_sources_degrees = MINIMAL_DEFAULT_OTHER_SOURCES_DEGREES chart_data = {'1' : pledges_degrees, '2' : redonations_degrees, '3' : other_sources_degrees, '4' : max(0, (TOTAL_DEGREES-(pledges_degrees+other_sources_degrees+redonations_degrees))) } cairoplot.donut_plot(name=chart_abspathname, data=chart_data, width=chart_image_width, height=chart_image_height, background='transparent', inner_radius=CHART_INNER_RADIUS, colors=chart_colors, radius_list=CHART_RADIUS_LIST) response = HttpResponse(mimetype='image/'+CHART_IMAGE_TYPE) response['Content-Length'] = os.path.getsize(chart_abspathname) response.write(open(chart_abspathname, 'r').read()) return response
def create_graphs(self): """ Cria graficos para nextHeader, addressType e trafficClass Exporta como imagem para ser utilizado com o GTK.""" self.set_dicts() background = cairo.LinearGradient(300, 0, 300, 400) background.add_color_stop_rgb(0,0.4,0.4,0.4) background.add_color_stop_rgb(1.0,0.1,0.1,0.1) data = self.next_header_dict cairoplot.donut_plot( "nextHeader.svg", data, 400, 200, gradient = True, shadow = True, inner_radius = 0.3 ) data = self.address_type_dict cairoplot.donut_plot( "addressType.svg", data, 400, 200, gradient = True, shadow = True, inner_radius = 0.3 ) data = self.traffic_class_dict cairoplot.donut_plot( "trafficClass.svg", data, 400, 200, gradient = True, shadow = True, inner_radius = 0.3 ) data = self.number_of_next_header x_labels = ["Quantidade de próximos cabeçalhos"] y_labels = [str(i) for i in range(max(data)+1)] # cairoplot.dot_line_plot("lenNextHeader.svg", data, 400, 200, axis = False, grid = True, x_labels = [' ',' ']) cairoplot.vertical_bar_plot ( 'lenNextHeader.svg', data, 400, 200, grid = True, rounded_corners = True, x_labels = x_labels, y_labels = y_labels) self.counts_udp_icmpv6() size = len(self.filtered_list) data = [ [self.icmpv6_number, size - self.icmpv6_number], [self.udp_number, size - self.udp_number]] colors = [ (1,0.2,0), (1,1,0) ] x_labels = ["ICMPv6", "UDP"] cairoplot.vertical_bar_plot ( 'extra.svg', data, 400, 200, display_values = True, grid = True, rounded_corners = True, stack = True, x_labels = x_labels, colors = colors )
background.add_color_stop_rgb(1.0, 0.1, 0.1, 0.1) data = {'1': 300, '2': 300, '3': 300, '4': 300} radius_list = (60, 40, 20, 60) shadow_parts = (True, True, True, True) colors = ['red', 'green', 'yellow', 'blue'] colors_mix = ['red', #R (0, 1, 0, 0.75, 'solid'), #G (1, 1, 0, 0.75, 'linear'), #Y (0, 0, 1, 0.75, 'radial')] #B cairoplot.donut_plot('donut_transp.png', data, 800, 600, background='transparent', gradient=True, shadow=True, shadow_parts=shadow_parts, inner_radius=0.8, colors=colors_mix, radius_list=radius_list) cairoplot.donut_plot('donut.png', data, 800, 600, background = 'transparent', gradient = True, shadow = True, shadow_parts = shadow_parts, inner_radius = 0.8, colors = colors, radius_list = radius_list) cairoplot.donut_plot('donut_gradient_off.png', data, 800, 600, background = 'transparent', gradient = False, shadow = True,
def donutGraphAll(): saveFile = os.path.join(saveDir, "donutSubReddit.png") subReddDict = donutFrontPageSub() cairoplot.donut_plot(saveFile, subReddDict, 700, 700, background = (0,0,.2), gradient=True)
def donutGraphAll(): saveFile = os.path.join(saveDir, "donutSubReddit.png") subReddDict = donutFrontPageSub() cairoplot.donut_plot(saveFile, subReddDict, 700, 700, background=(0, 0, 0.2), gradient=True)
#Plot data data = {"orcs" : 100, "goblins" : 230, "elves" : 50 , "demons" : 43, "humans" : 332} cairoplot.pie_plot( "pie_1_default_series.png", data, 600, 400 ) cairoplot.pie_plot( "pie_2_gradient_shadow_series.png", data, 600, 400, gradient = True, shadow = True ) cairoplot.pie_plot( "pie_3_background_series.png", data, 600, 400, background = background, gradient = True, shadow = True ) if test_donut_plot : #Define a new backgrond background = cairo.LinearGradient(300, 0, 300, 400) background.add_color_stop_rgb(0,0.4,0.4,0.4) background.add_color_stop_rgb(1.0,0.1,0.1,0.1) data = {"john" : 700, "mary" : 100, "philip" : 100 , "suzy" : 50, "yman" : 50} #Default plot, gradient and shadow, different background cairoplot.donut_plot( "donut_1_default_series.png", data, 600, 400, inner_radius = 0.3 ) cairoplot.donut_plot( "donut_2_gradient_shadow_series.png", data, 600, 400, gradient = True, shadow = True, inner_radius = 0.3 ) cairoplot.donut_plot( "donut_3_background_series.png", data, 600, 400, background = background, gradient = True, shadow = True, inner_radius = 0.3 ) if test_gantt_chart : #Default Plot pieces = Series([(0.5, 5.5), [(0, 4), (6, 8)], (5.5, 7), (7, 9)]) x_labels = [ 'teste01', 'teste02', 'teste03', 'teste04'] y_labels = [ '0001', '0002', '0003', '0004', '0005', '0006', '0007', '0008', '0009', '0010' ] colors = [ (1.0, 0.0, 0.0), (1.0, 0.7, 0.0), (1.0, 1.0, 0.0), (0.0, 1.0, 0.0) ] cairoplot.gantt_chart('gantt_1_default_series.png', pieces, 500, 350, x_labels, y_labels, colors) if test_themes : data = Series([[1,2,3,4,5,6,7,8,9,10,11,12,13,14]]) cairoplot.vertical_bar_plot ( 'bar_1_color_themes_series.png', data, 400, 300, border = 20, grid = True, colors="rainbow" )
def chart_image_project(request, project_key): project = get_object_or_404(Project, key=project_key) chart_size, pledges_rgbas, redonations_rgbas, other_sources_rgbas, background_rgbas = _parse_request_chart_params(request) chart_colors = [pledges_rgbas, redonations_rgbas, other_sources_rgbas, background_rgbas] if chart_size in CHART_PARAMS['project']: chart_image_width = CHART_PARAMS['project'][chart_size]['w'] chart_image_height = CHART_PARAMS['project'][chart_size]['h'] else: chart_image_width = chart_image_height = int(chart_size) chart_relpathname = _get_chart_relative_filename(project_key, chart_size) chart_abspathname = MEDIA_ROOT+chart_relpathname project_monthly_budget = project.getTotalMonthlyBudget() pledges_needs_total_sum, pledges_goals_total_sum = project.getTotalMonthlyPledges() redonations_total_sum = project.getTotalMonthlyRedonations() other_sources_needs_total_sum, other_sources_goals_total_sum = project.getTotalMonthlyOtherSources() other_sources_total_sum = other_sources_needs_total_sum + other_sources_goals_total_sum #donut chart radiants if project_monthly_budget > 0 : pledges_degrees = min(TOTAL_DEGREES, round(TOTAL_DEGREES * (pledges_needs_total_sum / project_monthly_budget))) redonations_degrees = min((TOTAL_DEGREES-pledges_degrees), round(TOTAL_DEGREES * (redonations_total_sum / project_monthly_budget))) other_sources_degrees = min((TOTAL_DEGREES-pledges_degrees-redonations_degrees), round(TOTAL_DEGREES * (other_sources_total_sum / project_monthly_budget))) else : pledges_degrees = 0 redonations_degrees = 0 other_sources_degrees = 0 if pledges_needs_total_sum > 0 : pledges_degrees = TOTAL_DEGREES elif redonations_total_sum > 0 : redonations_degrees = TOTAL_DEGREES elif other_sources_total_sum > 0 : other_sources_degrees = TOTAL_DEGREES if pledges_needs_total_sum == 0 and redonations_degrees == 0 and other_sources_degrees == 0 : pledges_degrees = MINIMAL_DEFAULT_PLEDGES_DEGREES redonations_degrees = MINIMAL_DEFAULT_REDONATIONS_DEGREES other_sources_degrees = MINIMAL_DEFAULT_OTHER_SOURCES_DEGREES chart_data = {'1' : pledges_degrees, '2' : redonations_degrees, '3' : other_sources_degrees, '4' : max(0, (TOTAL_DEGREES-(pledges_degrees+redonations_degrees+other_sources_degrees))), } cairoplot.donut_plot(name=chart_abspathname, data=chart_data, width=chart_image_width, height=chart_image_height, background='transparent', inner_radius=CHART_INNER_RADIUS, radius_list=CHART_RADIUS_LIST, colors=chart_colors ) response = HttpResponse(mimetype='image/'+CHART_IMAGE_TYPE) response['Content-Length'] = os.path.getsize(chart_abspathname) response.write(open(chart_abspathname, 'r').read()) return response
radius_list = (60, 40, 20, 60) shadow_parts = (True, True, True, True) colors = ['red', 'green', 'yellow', 'blue'] colors_mix = [ 'red', #R (0, 1, 0, 0.75, 'solid'), #G (1, 1, 0, 0.75, 'linear'), #Y (0, 0, 1, 0.75, 'radial') ] #B cairoplot.donut_plot('donut_transp.png', data, 800, 600, background='transparent', gradient=True, shadow=True, shadow_parts=shadow_parts, inner_radius=0.8, colors=colors_mix, radius_list=radius_list) cairoplot.donut_plot('donut.png', data, 800, 600, background='transparent', gradient=True, shadow=True, shadow_parts=shadow_parts, inner_radius=0.8,