Mapas, eleições e a distribuição de poder pela cidade

Pedro Markun
25/11/2016

Quem sou eu?

  • Pai, hacker e ativista
  • Fundador da Transparência Hacker e do Ônibus Hacker
  • Candidato à vereador em 2016

Informação geopolítica

Dados do TSE

Fonte: http://www.tse.jus.br/eleicoes/estatisticas/repositorio-de-dados-eleitorais

  • Zonas Eleitorais (Zip de 30.9mb p/ Brasil)
  • Sessões Eleitorais (Zip 48.4mb p/ SP)
  • Urnas (Zip 126mb p/ SP)

Dados do TRE-SP

Fonte: Lei de Acesso à Informação (pedido por email)

  • Shape das Zonas Eleitorais

Algumas perguntas

  • Como se distribuem os votos para vereador espacialmente?
  • Onde estão e quem são os votos brancos e nulos?
  • Quais zonas eleitorais tem maior ou menor disputa por votos?

Carregando os dados

require(data.table)

votacao <- fread("~/eleicoes2016/v/votacao_candidato_munzona_2016_SP.txt",
                 sep=";",
                 header = FALSE,
                 encoding="Latin-1")

head(votacao)
           V1       V2   V3 V4                       V5 V6    V7    V8
1: 24/11/2016 17:25:33 2016  1 ELEIÇÕES MUNICIPAIS 2016 SP 61000 61000
2: 24/11/2016 17:25:33 2016  1 ELEIÇÕES MUNICIPAIS 2016 SP 61000 61000
3: 24/11/2016 17:25:33 2016  1 ELEIÇÕES MUNICIPAIS 2016 SP 61000 61000
4: 24/11/2016 17:25:33 2016  1 ELEIÇÕES MUNICIPAIS 2016 SP 61000 61000
5: 24/11/2016 17:25:33 2016  1 ELEIÇÕES MUNICIPAIS 2016 SP 61000 61000
6: 24/11/2016 17:25:33 2016  1 ELEIÇÕES MUNICIPAIS 2016 SP 61000 61000
                           V9 V10 V11   V12          V13
1: EUCLIDES DA CUNHA PAULISTA 330  11    55 250000042444
2: EUCLIDES DA CUNHA PAULISTA 330  11    15 250000073665
3: EUCLIDES DA CUNHA PAULISTA 330  11    10 250000091585
4: EUCLIDES DA CUNHA PAULISTA 330  13 55333 250000042446
5: EUCLIDES DA CUNHA PAULISTA 330  13 55655 250000042447
6: EUCLIDES DA CUNHA PAULISTA 330  13 55456 250000042448
                          V14               V15      V16 V17  V18 V19
1:     CHRISTIAN FUZIKI IKEDA      DR CHRISTIAN PREFEITO  12 APTO   2
2:          ELIAS TOLOVI ROSA             ELIAS PREFEITO  12 APTO   2
3:       DOMINGOS MENTE LOPES        NÊNÊ LOPES PREFEITO  12 APTO   2
4:       EDSON ALVES DA SILVA EDSON DO HERCULES VEREADOR  12 APTO   2
5:     LUIZ FERREIRA DE SOUZA              LUIZ VEREADOR  12 APTO   2
6: ARNALDO FRANCISCO DA SILVA           ARNALDO VEREADOR  12 APTO   2
        V20 V21           V22 V23  V24
1: DEFERIDO   1        ELEITO  55  PSD
2: DEFERIDO   4    NÃO ELEITO  15 PMDB
3: DEFERIDO   4    NÃO ELEITO  10  PRB
4: DEFERIDO   5      SUPLENTE  55  PSD
5: DEFERIDO   5      SUPLENTE  55  PSD
6: DEFERIDO   2 ELEITO POR QP  55  PSD
                                           V25          V26
1:                  Partido Social Democrático 250000002581
2: Partido do Movimento Democrático Brasileiro 250000004894
3:              Partido Republicano Brasileiro 250000006125
4:                  Partido Social Democrático 250000005533
5:                  Partido Social Democrático 250000005533
6:                  Partido Social Democrático 250000005533
                               V27                              V28  V29
1:              UNIÃO PELA MUDANÇA        PSD / PTB / PT / PP / PPS 2371
2:   RUMO NOVO COM A FORÇA DO POVO PMDB / PSC / DEM / PSB / PV / SD 1624
3: COLIGAÇÃO 'AGORA É FICHA LIMPA'           PRB / PDT / PSL / PSDB 1756
4:                 PARTIDO ISOLADO                              PSD   15
5:                 PARTIDO ISOLADO                              PSD  179
6:                 PARTIDO ISOLADO                              PSD  193
   V30
1:   N
2:   N
3:   N
4:   N
5:   N
6:   N

Processando os dados

                 V15 V10 total id
1    ADRIANA RAMALHO   1   783  1
2      ALINE CARDOSO   1   304  1
3     AURÉLIO NOMURA   1  1754  1
4         FABIO RIVA   1   188  1
5   PATRICIA BEZERRA   1   531  1
6 CLAUDINHO DE SOUZA   1   110  1

Carregando o Shape

require(rgdal)
shape <- readOGR("/home/markun/eleicoes2016/shape", "zonaseleitorais2")
OGR data source with driver: ESRI Shapefile 
Source: "/home/markun/eleicoes2016/shape", layer: "zonaseleitorais2"
with 58 features
It has 2 fields

Plotando

require(ggplot2)

ggplot(data=shape, aes(x=long,y=lat, group=group)) +
  geom_polygon() +
  geom_path(color='black')

plot of chunk unnamed-chunk-4

Fortificando os dados

candidato <- eleitos_por_zona %>%
  filter(V14=='ANTONIO BIAGIO VESPOLI')

shape_ft <- fortify(shape, region="Name") %>%
  left_join(candidato, by=c('id'='id'))

Votação por Zona (código)

require(scales)
require(mapproj)

ggplot(data=shape_ft, aes(x=long,y=lat, group=group, fill=shape_ft$total)) +
  geom_polygon() +
  geom_path(color='black') + 
  scale_fill_distiller(name="Votos", palette = "YlGn", breaks = pretty_breaks(n = 5), direction = 1) +
  labs(x=NULL,y=NULL,title='Votação por Zona') +
  theme(axis.text = element_blank()) +
  coord_map()

Votação por Zona - Toninho Vespoli (PSOL)

plot of chunk unnamed-chunk-7

Votação por Zona - Sâmia Bomfim (PSOL)

plot of chunk unnamed-chunk-8

Votação por Zona - Police Neto (PSD)

plot of chunk unnamed-chunk-9

Votação por Zona - Suplicy (PT)

plot of chunk unnamed-chunk-10

Obrigado!

Pedro Markun

pedro@markun.com.br

github.com/pmarkun