Exemple #1
0
def charts_participation():
    print request.args_as_dict()
    buckets = [0]*10
    for d in mdb.deputes.find({'depute_actif':True},{'stats.positions.exprimes':1}):
        if 'positions' in d['stats'].keys():
            buckets[int(d['stats']['positions']['exprimes'])/10] += 1
    #return json_response(dict(n=sum(buckets),buckets=buckets))


    #return json_response(data)
    from pygal.style import Style
    custom_style = Style(
          font_family="'Montserrat', sans-serif;"
          )

    import datetime
    barchart = pygal.Bar(human_readable=True, show_legend=False,x_title=u'% de participation',y_title=u"nb de députés",style=custom_style)
    barchart.title = u'Participation aux scrutins publics\n(au %s)' % (datetime.datetime.now().strftime('%d/%m/%Y'))
    barchart.x_labels = ["%d-%d" % (n*10,9+n*10) for n in range(10)]
    barchart.add('nb', buckets)

    from StringIO import StringIO
    chart = StringIO()
    barchart.render_to_png(chart)
    return image_response('png',chart.getvalue())
Exemple #2
0
def view_visueliec():
    theme=request.form.get('theme')
    themecustom=request.form.get('themecustom')
    contenu=request.form.get('contenu')
    source=request.form.get('source')
    param = params[theme]
    return image_response('png',visueliec1(theme=theme,themecustom=themecustom, contenu=contenu,source=source,**param),filename=theme.replace(' ',''))
Exemple #3
0
def votesgroupes():
    #return json_response(list(mdb.groupes.find({},{'_id':None,'groupe_abrev':1,'groupe_uid':1})))
    libelles = {'FI':u'France Insoumise',
                'LAREM':u'République en Marche',
                'UDI-AGIR': u'UDI, Agir et Indépendants',
                'GDR':u'Gauche Démocratique et Républicaine',
                'NG':u'Nouvelle Gauche',
                'MODEM':u'Mouvement Démocrate',
                'LR':u'Les Républicains',
                'NI':u'Députés Non Inscrits'
                }
    #return json_response(mdb.votes.find_one())
    pgroup = {}
    pgroup['n'] = {'$sum':1}
    pgroup['_id'] = { 'groupe':'$groupe_abrev','position':'$vote_position'}
    pipeline = [{'$group':pgroup}]
    grps = {}

    for v in mdb.votes.aggregate(pipeline):
        g = v['_id']['groupe']
        p = v['_id']['position']
        n = v['n']
        if g=='LC':
            g='UDI-AGIR'
        if not g in grps:
            grps[g] = { 'absent':0,'pour':0,'contre':0,'abstention':0 }
        grps[g][p] += n
    stats = []
    for g in grps:
        stat = dict(g=g)
        tot  = sum(grps[g].values())
        for p in ('pour','contre','abstention','absent'):
            stat[p]=100*float(grps[g][p])/tot

        stats.append(stat)
    stats.sort(key=lambda x:x['absent'],reverse=True)

    from pygal.style import Style
    custom_style = Style(
          font_family="'Montserrat', sans-serif;",
          major_label_font_size=15,
          colors=['#25a87e','#e23d21','#213558','#bbbbbb']
          )


    histo_chart = pygal.HorizontalStackedBar(x_label_rotation=0,width=1024,height=512,human_readable=True, x_title='%',y_title="Groupes parlementaires",style=custom_style)
    histo_chart.title = u'Votes des députés aux scrutins publics\n par groupe parlementaire (au %s)' % (datetime.datetime.now().strftime('%d/%m/%Y'))
    for x in 'pour','contre','abstention','absent':
        histo_chart.add('%s' % x, [stat[x] for stat in stats])
    histo_chart.x_labels = [libelles[stat['g']] for stat in stats]
    histo_chart.y_labels = []
    #histo_chart.x_labels_major = majors


    from StringIO import StringIO
    chart = StringIO()
    histo_chart.render_to_png(chart)
    return image_response('png',chart.getvalue())
    return json_response(stats)
Exemple #4
0
def groupesstat(stat):
    pardepute = 'pardepute' in request.args.keys()
    params = {'nbmots':{'legende':'Nombre de mots','titre':u'Nombre de mots prononcés en session','xaxis':u'Nombre de mots'},
              'nbitvs':{'legende':"Nombre d'interventions",'titre':u"Nombre d'interventions en session",'xaxis':u"Nombre d'interventions"}}
    libelles = {'FI':u'France Insoumise',
                'LAREM':u'République en Marche',
                'UDI-AGIR': u'UDI, Agir et Indépendants',
                'GDR':u'Gauche Démocratique et Républicaine',
                'NG':u'Nouvelle Gauche',
                'MODEM':u'Mouvement Démocrate',
                'LR':u'Les Républicains',
                'NI':u'Députés Non Inscrits'
                }
    #return json_response(mdb.votes.find_one())
    pgroup = {}
    pgroup['n'] = {'$sum':'$stats.%s' % stat}
    pgroup['_id'] = { 'groupe':'$groupe_abrev'}
    pipeline = [{'$group':pgroup}]
    grps = {}

    for a in mdb.deputes.aggregate(pipeline):
        g = a['_id']['groupe']
        n = a['n']
        if g=='LC':
            g='UDI-AGIR'
        if not g in grps:
            grps[g] = 0
        grps[g] += n



    from pygal.style import Style
    custom_style = Style(
          font_family="'Montserrat', sans-serif;",
          major_label_font_size=15,
          title_font_size=18,
          value_font_size=11,
          colors=['#25a87e','#e23d21','#213558','#bbbbbb']
          )
    nbmembres = dict((g['groupe_abrev'],g['groupe_nbmembres']) for g in mdb.groupes.find({},{'groupe_nbmembres':1,'groupe_abrev':1,'_id':None}))
    stats = sorted(grps.items(),key=lambda x:x[1])
    pardep =u" par député" if pardepute else ""
    histo_chart = pygal.HorizontalBar(print_values=True,show_x_labels=False,show_legend=True,x_label_rotation=0,width=1024,height=512,human_readable=True,y_title="Groupes parlementaires",style=custom_style)
    histo_chart.title = params[stat]['titre']+pardep+u'\n par groupe parlementaire (au %s)' % (datetime.datetime.now().strftime('%d/%m/%Y'))
    histo_chart.add( params[stat]['xaxis'], [stat[1] for stat in stats])
    histo_chart.add(u'nombre de députés', [nbmembres[stat[0]] for stat in stats])
    #histo_chart.add('par député', [stat[2] for stat in stats])

    histo_chart.x_labels = [libelles[stat[0]] for stat in stats]
    #histo_chart.x_labels_major = majors


    from StringIO import StringIO
    chart = StringIO()
    histo_chart.render_to_png(chart)
    return image_response('png',chart.getvalue())
Exemple #5
0
def propgroupes():
    pie_chart = pygal.Pie(half_pie=True)
    pie_chart.title = 'Browser usage in February 2012 (in %)'
    pie_chart.add('IE', 19.5)
    pie_chart.add('Firefox', 36.6)
    pie_chart.add('Chrome', 36.3)
    pie_chart.add('Safari', 4.5)
    pie_chart.add('Opera', 2.3)
    from StringIO import StringIO
    chart = StringIO()
    pie_chart.render_to_file(chart)
    return image_response('svg',chart.getvalue())
Exemple #6
0
def pyramideage():

    pgroup = {}

    pgroup['n'] = {'$sum':1}
    pgroup['_id'] = { 'sexe':'$depute_sexe','age':'$depute_age','position':'$vote_position'}
    pipeline = [{'$group':pgroup}]
    grps = []
    pchart = {'Homme':[None]*20,'Femme':[None]*20}

    for agg in mdb.votes.aggregate(pipeline):
        a = agg['_id']
        if a['age']<20:
            print a

        classeage = int(a['age']/5)
        if not pchart[a['sexe']][classeage]:
            pchart[a['sexe']][classeage] = dict(pour=0,contre=0,absent=0,abstention=0)
        pchart[a['sexe']][classeage][a['position']] += agg['n']



    #return json_response(data)
    from pygal.style import Style
    custom_style = Style(
          font_family="'Montserrat', sans-serif;"
          )

    import datetime
    pyramid_chart = pygal.Pyramid(human_readable=True, x_title='% de participation',y_title="classes d'age",style=custom_style)
    pyramid_chart.title = u'Répartition de la participation aux scrutins publics\npar age et par sexe (au %s)' % (datetime.datetime.now().strftime('%d/%m/%Y'))
    pyramid_chart.x_labels = ['%d-%d'% (a*5,(a+1)*5) for a in range(18)]

    for s in ['Femme','Homme']:
        items = []
        for ca in pchart[s]:
            if ca:
                items.append(round(100*float(ca['pour']+ca['contre']+ca['abstention'])/sum(ca.values()),0))
            else:
                items.append(0)
        pyramid_chart.add(s+'s',items)
    from StringIO import StringIO
    chart = StringIO()
    pyramid_chart.render_to_png(chart)
    return image_response('png',chart.getvalue())
Exemple #7
0
def chart_compatdep():
    deputes = request.args.get('depute','francoisruffin').split(',')

    dep_cpt = mdb.deputes.find({'depute_shortid':{'$in':deputes}},{'depute_nom':1,'stats.compat':1,'_id':None})
    radar_chart = pygal.Radar(fill=True,legend_at_bottom=True,height=650,width=600)
    groupes = ['FI','GDR','NG','LAREM','MODEM','UDI-AGIR','LR']
    radar_chart.title = u'Compatibilités vote (vote pour aux amendements)'
    radar_chart.x_labels = groupes
    for d in dep_cpt:
        print d
        radar_chart.add(d['depute_nom'], [d['stats']['compat'][g] for g in groupes])
    #radar_chart.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])
    #radar_chart.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])
    #radar_chart.add('IE', [43, 41, 59, 79, 144, 136, 34, 102])
    from StringIO import StringIO
    chart = StringIO()
    radar_chart.render_to_png(chart)
    return image_response('png',chart.getvalue())
Exemple #8
0
def participationscrutins():
    data = {'pour':[],'contre':[],'abstention':[],'absent':[]}
    xlabels = []
    majors = []
    i=0
    scrutins = list(mdb.scrutins.find({},{'scrutin_date':1,'scrutin_num':1,'scrutin_positions.assemblee':1,'_id':None}))
    for s in scrutins:
        for x in 'pour','contre','abstention','absent':
            v = 100*float(s['scrutin_positions']['assemblee'].get(x,0))/s['scrutin_positions']['assemblee']['total']
            data[x].append(v)


            lab = "%d" % (s['scrutin_num'])
            xlabels.append(lab)
            majors.append(lab)
        else:
            xlabels.append("")
        i += 1



    from pygal.style import Style
    custom_style = Style(
          font_family="'Montserrat', sans-serif;",
          major_label_font_size=15,
          colors=['#25a87e','#e23d21','#213558','#dddddd']
          )


    histo_chart = pygal.StackedBar(x_label_rotation=90,width=1024,height=512,human_readable=True, x_title='Scrutins',y_title="%",style=custom_style)
    histo_chart.title = u'Positions lors des scrutins\n (au %s)' % (datetime.datetime.now().strftime('%d/%m/%Y'))
    for x in 'pour','contre','abstention','absent':
        histo_chart.add('%s' % x, data[x])
    #histo_chart.x_labels = xlabels
    #histo_chart.x_labels_major = majors


    from StringIO import StringIO
    chart = StringIO()
    histo_chart.render_to_png(chart)
    return image_response('png',chart.getvalue())
Exemple #9
0
def viewtestgen():
    return image_response('png',gentest())
Exemple #10
0
def visvotcledetailvideo(num):
    font=int(request.args.get('fs','20'))
    fontsub=int(request.args.get('fst','24'))
    return image_response('png',visuelvotecledetailvideo(num,font,fontsub))
Exemple #11
0
def visvotcle(num):
    groupe=request.args.get('groupe',None)
    font=int(request.args.get('fs','16'))
    fontsub=int(request.args.get('fst','20'))
    return image_response('png',visuelvotecle(num,groupe,font,fontsub))
Exemple #12
0
def visbingo():
    #groupe=request.args.get('groupe',None)
    #font=int(request.args.get('fs','16'))
    #fontsub=int(request.args.get('fst','20'))

    return image_response('png',bingovisuel(request.form.to_dict(),files=request.files),filename="bingo")
Exemple #13
0
def comparestats(elts):
    elts = elts.split(',')
    items = {'vote':{'legende':'% de vote au scrutins publics','valeur':{'G':'stats.positions.exprimes','D':'stats.positions.exprimes'}},
             'commission':{'legende':u'% de présence en commission','valeur':{'G':'stats.commissions.toutes.present','D':'stats.commissions.present'}},
             'amendements':{'legende':u"Nombre d'amendements (par député)",'valeur':{'G':'stats.amendements.rediges','D':'stats.amendements.rediges'},'ponderation':True},
             'nbmots':{'legende':u'Nombre de mots (par député)','valeur':{'G':'stats.nbmots','D':'stats.nbmots'},'ponderation':True},
               'nbitvs':{'legende':u"Nombre d'interventions (par député)",'valeur':{'G':'stats.nbitvs','D':'stats.nbitvs'},'ponderation':True},
               }
    statorder = ['nbmots','nbitvs','amendements','commission','vote']
    depstats = dict((d['depute_shortid'],d) for d in mdb.deputes.find({'depute_shortid':{'$in':elts}},{'depute_nomcomplet':1,'depute_shortid':1,'stats':1,'_id':None}))
    gpstats = dict((g['groupe_abrev'],g) for g in mdb.groupes.find({'groupe_abrev':{'$in':elts}},{'groupe_abrev':1,'groupe_libelle':1,'stats':1,'groupe_nbmembres':1,'_id':None}))
    titres = {}
    valeurs = {}
    for e in elts:
        valeurs[e]=[]
        if e in depstats.keys():
            titres[e] = depstats[e]['depute_nomcomplet']
            nb = 1
            v = 'D'
            stats = depstats[e]
        elif e in gpstats.keys():
            titres[e] = gpstats[e]['groupe_libelle']

            nb = gpstats[e]['groupe_nbmembres']
            v = 'G'
            stats = gpstats[e]
        for it in statorder:
            itdef = items[it]
            pond = nb if itdef.get('ponderation',False) else 1
            valeurs[e].append(getdot(stats,itdef['valeur'][v])/pond)


    from pygal.style import Style
    custom_style = Style(
          font_family="'Montserrat', sans-serif;",
          major_label_font_size=15,
          title_font_size=18,
          value_font_size=11,
          colors=['#25a87e','#e23d21','#213558','#bbbbbb']
          )

    maxs = {}
    for i,st in enumerate(statorder):
        maxs[st] = max([valeurs[e][i] for e in elts])
    #return json_response({'titres':titres,'valeurs':valeurs,'maxs':maxs})


    histo_chart = pygal.HorizontalBar(truncate_legend=-1,print_values=True,show_x_labels=False,show_legend=True,width=1024,height=512,human_readable=True,style=custom_style)
    histo_chart.title = u"Comparaison activité (au %s)" % (datetime.datetime.now().strftime('%d/%m/%Y'))

    def formatter(v):
        return lambda y:"%.0f" % (y*v)
    for elt in elts:
        histo_chart.add( titres[elt], [{'value':float(x)/maxs[statorder[i]],'formatter':formatter(maxs[statorder[i]])} for i,x in enumerate(valeurs[elt])])

    #histo_chart.add('par député', [stat[2] for stat in stats])

    histo_chart.x_labels = [items[item]['legende'] for item in statorder]
    #histo_chart.x_labels_major = majors


    from StringIO import StringIO
    chart = StringIO()
    histo_chart.render_to_png(chart)
    return image_response('png',chart.getvalue())
Exemple #14
0
def groupesstats():

    params = {'nbmots':{'legende':'Nombre de mots','titre':u'Nombre de mots prononcés en session','xaxis':u'Nombre de mots'},
              'nbitvs':{'legende':"Nombre d'interventions",'titre':u"Nombre d'interventions en session",'xaxis':u"Nombre d'interventions"}}
    params = {'stats.nbmots':{'legende':'Nombre de mots'},
              'stats.nbitvs':{'legende':"Nombre d'interventions"},
              'groupe_nbmembres':{'legende':'Nombre de membres'}}
              #'stats.positions.exprimes':{'legende':'Participation aux\nscrutins publics'}}

    grporder = ('FI','LAREM','LR','MODEM','GDR','NG','UDI-AGIR','NI')
    libelles = {'FI':u'France Insoumise',
                'LAREM':u'République en Marche',
                'UDI-AGIR': u'UDI, Agir et Indépendants',
                'GDR':u'Gauche Démocratique et Républicaine',
                'NG':u'Nouvelle Gauche',
                'MODEM':u'Mouvement Démocrate',
                'LR':u'Les Républicains',
                'NI':u'Députés Non Inscrits'
                }
    groupes =  dict((g['groupe_abrev'],g) for g in mdb.groupes.find({'groupe_abrev':{'$ne':'LC'}},{'groupe_abrev':1,'groupe_nbmembres':1,'stats':1,'_id':None}))


    from pygal.style import Style
    custom_style = Style(
          font_family="'Montserrat', sans-serif;",
          major_label_font_size=15,
          title_font_size=18,
          value_font_size=11,
          colors=['#25a87e','#e23d21','#213558','#bbbbbb']
          )

    maxs = {}
    stats = dict((item,[]) for item in params.keys())

    for item in params.keys():
        for g in reversed(grporder):
            stats[item].append(getdot(groupes[g],item))
        maxs[item]=max(stats[item])





    histo_chart = pygal.HorizontalBar(truncate_legend=-1,print_values=True,show_x_labels=False,show_legend=True,width=1024,height=512,human_readable=True,style=custom_style)
    histo_chart.title = "Statistiques des groupes parlementaires (au %s)" % (datetime.datetime.now().strftime('%d/%m/%Y'))

    def formatter(v):
        return lambda y:"%.0f" % (y*v)
    for item in params.keys():
        histo_chart.add( params[item]['legende'], [float(x)/maxs[item] for x in stats[item]], formatter=formatter(maxs[item]))

    #histo_chart.add('par député', [stat[2] for stat in stats])

    histo_chart.x_labels = [libelles[g] for g in reversed(grporder)]
    #histo_chart.x_labels_major = majors


    from StringIO import StringIO
    chart = StringIO()
    histo_chart.render_to_png(chart)
    return image_response('png',chart.getvalue())