def evolucao_sumulas(self, view=True): """ plota series temporais de citações por esfera """ sumulas_ano = self.session.query( "llei", "year", 'sumcits' ).from_statement( "select LEFT(lei,3) as llei, DATE_FORMAT(decisao.data_dec,'%Y') AS year, count(*) as sumcits FROM lei_decisao JOIN decisao ON decisao.id = lei_decisao.decisao_id WHERE lei_decisao.lei like 'SUM%' AND year(decisao.data_dec) > 1900 GROUP BY year(decisao.data_dec)" ).all() # print sumulas_ano # sumulas = self.session.query(Lei.esfera, Lei.id,Lei.lei, Decisao.data_dec).join((Decisao, Decisao.id==Lei.decisao_id)).filter(Lei.esfera=='LEG-FED').filter(Lei.lei.like('SUM%')).all() leg_fed = self.session.query( "esfera", "year", 'sumcits' ).from_statement( "select esfera, DATE_FORMAT(decisao.data_dec,'%Y') AS year, count(*) as sumcits FROM lei_decisao JOIN decisao ON decisao.id = lei_decisao.decisao_id WHERE year(decisao.data_dec) > 1900 GROUP BY year(decisao.data_dec)" ).all() # leg_fed = self.session.query(Lei.esfera, Decisao.data_dec).join((Decisao, Decisao.id==Lei.decisao_id)).filter(Lei.esfera=='LEG-FED').all() # Contagem de sumulas por ano # print leg_fed anodict = dict([(int(l[1]), l[2]) for l in sumulas_ano if l[1]]) # Contagem de leg-fed por ano lfanodict = dict([(int(l[1]), l[2]) for l in leg_fed if l[1]]) # Calcula proporcao # for a in anodict.keys(): # anodict[a] /=float(lfanodict[a]) t = anodict.keys() t.sort() series = {} series['Sumula'] = [anodict[ano] for ano in t] def visualiza(): P.figure() d = np.array(series.values()).T P.plot(t, d, ':o') P.title(u'Citações a súmulas') P.xlabel('ano') P.ylabel(u'fração do total de citações a legislação federal') P.legend(series.keys()) # P.gca().set_yscale('log') html = annot_TS('Decisoes referenciando sumulas', [datetime.date(i, 12, 31) for i in t], series.values(), series.keys()) with open('evo_sumulas.html', 'w') as f: f.write(html) if view: visualiza()
def serie_esferas(self, view=True): """ plota series temporais de citações por esfera """ anodict = defaultdict(lambda: {}) leis = self.session.query("esfera", "year", 'sumcits').from_statement( "select esfera, DATE_FORMAT(decisao.data_dec,'%Y') AS year, count(*) as sumcits FROM lei_decisao JOIN decisao ON decisao.id = lei_decisao.decisao_id GROUP BY year(decisao.data_dec), esfera" ).all() # print leis for l in leis: if (not l[1]) or int(l[1]) < 1900: continue #quando ano não esta especificado, i.e., ==None anodict[int(l[1])][l[0]] = l[2] # leis = self.session.query(Lei.esfera, Lei.id,Lei.lei, Decisao.data_dec).join((Decisao, Decisao.id==Lei.decisao_id)).all() esferas = [] for d in anodict.itervalues(): esferas += d.keys() esferas = list(set(esferas)) t = anodict.keys() t.sort() series = dict([(e, []) for e in esferas]) for e in esferas: for y in t: if e in anodict[y]: series[e].append(anodict[y][e]) else: series[e].append(np.nan) def visualiza(): d = np.array(series.values()).T P.figure() P.plot(t, d, ':o') P.legend(series.keys(), loc=0) P.title(u'Citações a Legislação') P.xlabel('ano') P.ylabel(u'total de citações') P.gca().set_yscale('log') # P.gca().set_yscale('log') html = annot_TS('Serie de citacoes', [datetime.date(i, 12, 31) for i in t], series.values(), series.keys()) with open('esf_series.html', 'w') as f: f.write(html) if view: visualiza()
def serie_esferas(self, view=True): """ plota series temporais de citações por esfera """ anodict = defaultdict(lambda:{}) leis = self.session.query("esfera", "year", 'sumcits').from_statement("select esfera, DATE_FORMAT(decisao.data_dec,'%Y') AS year, count(*) as sumcits FROM lei_decisao JOIN decisao ON decisao.id = lei_decisao.decisao_id GROUP BY year(decisao.data_dec), esfera").all() # print leis for l in leis: if (not l[1]) or int(l[1])<1900: continue #quando ano não esta especificado, i.e., ==None anodict[int(l[1])][l[0]]= l[2] # leis = self.session.query(Lei.esfera, Lei.id,Lei.lei, Decisao.data_dec).join((Decisao, Decisao.id==Lei.decisao_id)).all() esferas = [] for d in anodict.itervalues(): esferas += d.keys() esferas = list(set(esferas)) t = anodict.keys() t.sort() series = dict([(e, []) for e in esferas]) for e in esferas: for y in t: if e in anodict[y]: series[e].append(anodict[y][e]) else: series[e].append(np.nan) def visualiza(): d = np.array(series.values()).T P.figure() P.plot(t, d, ':o') P.legend(series.keys(), loc=0) P.title(u'Citações a Legislação') P.xlabel('ano') P.ylabel(u'total de citações') P.gca().set_yscale('log') # P.gca().set_yscale('log') html = annot_TS('Serie de citacoes', [datetime.date(i, 12, 31) for i in t], series.values(), series.keys()) with open('esf_series.html', 'w') as f: f.write(html) if view: visualiza()
def evolucao_sumulas(self, view=True): """ plota series temporais de citações por esfera """ sumulas_ano = self.session.query("llei", "year", 'sumcits').from_statement("select LEFT(lei,3) as llei, DATE_FORMAT(decisao.data_dec,'%Y') AS year, count(*) as sumcits FROM lei_decisao JOIN decisao ON decisao.id = lei_decisao.decisao_id WHERE lei_decisao.lei like 'SUM%' AND year(decisao.data_dec) > 1900 GROUP BY year(decisao.data_dec)").all() # print sumulas_ano # sumulas = self.session.query(Lei.esfera, Lei.id,Lei.lei, Decisao.data_dec).join((Decisao, Decisao.id==Lei.decisao_id)).filter(Lei.esfera=='LEG-FED').filter(Lei.lei.like('SUM%')).all() leg_fed = self.session.query("esfera", "year", 'sumcits').from_statement("select esfera, DATE_FORMAT(decisao.data_dec,'%Y') AS year, count(*) as sumcits FROM lei_decisao JOIN decisao ON decisao.id = lei_decisao.decisao_id WHERE year(decisao.data_dec) > 1900 GROUP BY year(decisao.data_dec)").all() # leg_fed = self.session.query(Lei.esfera, Decisao.data_dec).join((Decisao, Decisao.id==Lei.decisao_id)).filter(Lei.esfera=='LEG-FED').all() # Contagem de sumulas por ano # print leg_fed anodict = dict([(int(l[1]), l[2]) for l in sumulas_ano if l[1]]) # Contagem de leg-fed por ano lfanodict = dict([(int(l[1]), l[2]) for l in leg_fed if l[1]]) # Calcula proporcao # for a in anodict.keys(): # anodict[a] /=float(lfanodict[a]) t = anodict.keys() t.sort() series={} series['Sumula'] = [anodict[ano] for ano in t] def visualiza(): P.figure() d = np.array(series.values()).T P.plot(t, d, ':o') P.title(u'Citações a súmulas') P.xlabel('ano') P.ylabel(u'fração do total de citações a legislação federal') P.legend(series.keys()) # P.gca().set_yscale('log') html = annot_TS('Decisoes referenciando sumulas', [datetime.date(i, 12, 31) for i in t], series.values(), series.keys()) with open('evo_sumulas.html', 'w') as f: f.write(html) if view: visualiza()