コード例 #1
0
ファイル: charts.py プロジェクト: alexykot/bitfund
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
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
ファイル: charts.py プロジェクト: alexykot/bitfund
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
コード例 #5
0
ファイル: sniffer.py プロジェクト: matheper/sniffer
    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 )
コード例 #6
0
ファイル: gen.py プロジェクト: alexykot/bitfund
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,
コード例 #7
0
def donutGraphAll():
    saveFile = os.path.join(saveDir, "donutSubReddit.png")
    subReddDict = donutFrontPageSub()
    cairoplot.donut_plot(saveFile, subReddDict, 700, 700, background = (0,0,.2), gradient=True)
コード例 #8
0
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)
コード例 #9
0
    #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" )
    
コード例 #10
0
ファイル: charts.py プロジェクト: alexykot/bitfund
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
コード例 #11
0
ファイル: gen.py プロジェクト: alexykot/bitfund
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,