Durante los años 2018 y 2020, a partir del activismo de movimientos feministas y luego de varios intentos, el proyecto de ley de Interrupción Voluntaria del Embarazo ingresó al Poder Legislativo Nacional para su tratamiento. Mientras que en el primer año, se logró alcanzar únicamente la media sanción en la cámara baja para luego ser rechazado en la cámara alta, el proyecto ingresado en diciembre de 2020 fue finalmente aprobado tanto en Diputadxs como en Senadorxs con algunas diferencias que trataremos de identificar en el siguiente análisis donde abordaremos la distribución de votos en ambos años de acuerdo a la orientación política, las provincias, el género y la edad.
Cargamos las librerías que necesitamos.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.0.3
## -- Attaching packages ----------------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2 v purrr 0.3.4
## v tibble 3.0.4 v dplyr 1.0.2
## v tidyr 1.1.2 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.5.0
## Warning: package 'tibble' was built under R version 4.0.3
## Warning: package 'tidyr' was built under R version 4.0.3
## Warning: package 'dplyr' was built under R version 4.0.3
## -- Conflicts -------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(plyr)
## Warning: package 'plyr' was built under R version 4.0.3
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
##
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
## The following object is masked from 'package:purrr':
##
## compact
library(ggparliament)
## Warning: package 'ggparliament' was built under R version 4.0.3
library(ggthemes)
## Warning: package 'ggthemes' was built under R version 4.0.3
library(plotly)
## Warning: package 'plotly' was built under R version 4.0.3
##
## Attaching package: 'plotly'
## The following objects are masked from 'package:plyr':
##
## arrange, mutate, rename, summarise
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(readr)
library(readxl)
## Warning: package 'readxl' was built under R version 4.0.3
library(dplyr)
library(ggplot2)
library(geofacet)
## Warning: package 'geofacet' was built under R version 4.0.3
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
## The following object is masked from 'package:purrr':
##
## transpose
library(highcharter)
## Warning: package 'highcharter' was built under R version 4.0.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Highcharts (www.highcharts.com) is a Highsoft software product which is
## not free for commercial and Governmental use
library(scales)
##
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
##
## discard
## The following object is masked from 'package:readr':
##
## col_factor
library(paletteer)
## Warning: package 'paletteer' was built under R version 4.0.3
library(gganimate)
## Warning: package 'gganimate' was built under R version 4.0.3
1. Resultados de votaciones en Diputadxs 2018
1.1. Importamos el dataset de resultados de votaciones en Diputadxs 2018
votaciones_dip_2018 <- read.csv("C:/Documents and Settings/emili/Documents/EMILIA/R/EANT - SOCIAL DATA ANALYTICS/EANT - GRUPO IVE/votaciones_dip_2018_lanacion.csv", sep = ",", encoding = "UTF-8")
1.2. Revisamos el dataset.
View(votaciones_dip_2018)
glimpse(votaciones_dip_2018)
## Rows: 257
## Columns: 11
## $ X.U.FEFF.diputado_id <int> 853, 1307, 1279, 797, 878, 1267, 876, 1265, 59...
## $ Diputado <chr> "Monzó., Emilio", "Vigo, Alejandra María", "N...
## $ Provincia <chr> "BUENOS AIRES", "CÓRDOBA", "MENDOZA", "CHACO",...
## $ Partido <chr> "PRO", "CÓRDOBA FEDERAL", "UNIÓN CÍVICA RADICA...
## $ Orientación <chr> "Cambiemos", "PJ ", "Cambiemos", "Kirchnerismo...
## $ Voto <chr> "", "ABSTENCION", "AFIRMATIVO", "AFIRMATIVO", ...
## $ ley_id <int> 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708...
## $ Nombre.Ley <chr> "Legalización del aborto", "Legalización del a...
## $ Fecha <chr> "14/06/2018", "14/06/2018", "14/06/2018", "14/...
## $ Acta.votación <chr> "https://votaciones.hcdn.gob.ar/3805.pdf", "ht...
## $ Texto.Ley <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
colnames(votaciones_dip_2018)
## [1] "X.U.FEFF.diputado_id" "Diputado" "Provincia"
## [4] "Partido" "Orientación" "Voto"
## [7] "ley_id" "Nombre.Ley" "Fecha"
## [10] "Acta.votación" "Texto.Ley"
1.3. Seleccionamos las variables que necesitamos y quitamos el registro del presidente de la cámara.
resultados_dip_2018 <- votaciones_dip_2018 %>%
select(Diputado, Provincia, Orientación, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
1.4. Renombramos las siguientes columnas
colnames(resultados_dip_2018)[1] <- "nombre_diputado"
colnames(resultados_dip_2018)[2] <- "provincia"
colnames(resultados_dip_2018)[3] <- "orientación"
colnames(resultados_dip_2018)[4] <- "party_long"
#Renombramos voto por party_long para graficar con ggparliament, se suele usar para colorear la pertenencia partidaria pero en este caso lo rellenaremos por tipo de voto
1.5. Creamos las variables de cantidad de asientos, color, orden y gobierno para poder graficar con el paquete ggparliament.
#Columna seats
resultados_dip_2018 <- resultados_dip_2018 %>% mutate(
seats = case_when(
party_long == "AFIRMATIVO" ~ "1",
party_long == "ABSTENCION" ~ "1",
party_long == "AUSENTE" ~ "1",
party_long == "NEGATIVO" ~ "1",
))
resultados_dip_2018$seats <- as.double(resultados_dip_2018$seats)
#Columna colour
resultados_dip_2018 <- resultados_dip_2018 %>% mutate(
colour = case_when(
party_long == "AFIRMATIVO" ~ "#58eb34",
party_long == "ABSTENCION" ~ "#ebe834",
party_long == "AUSENTE" ~ "#9c9c91",
party_long == "NEGATIVO" ~ "#eb3a34",
))
#Creamos la columna orden para manifestar el orden en que deberá aparecer en el gráfico
resultados_dip_2018 <- resultados_dip_2018 %>% mutate(
orden = case_when(
party_long == "AUSENTE" ~ "1",
party_long == "ABSTENCION" ~ "2",
party_long == "NEGATIVO" ~ "3",
party_long == "AFIRMATIVO" ~ "4",
))
resultados_dip_2018$orden <- as.double(resultados_dip_2018$orden)
#Creamos la columna government, para que despues pueda contornear al que tenga la mayoria de votos
resultados_dip_2018 <- resultados_dip_2018 %>% mutate(
government = case_when(
party_long == "AFIRMATIVO" ~ "1",
party_long == "ABSTENCION" ~ "0",
party_long == "AUSENTE" ~ "0",
party_long == "NEGATIVO" ~ "0",
))
# Ordenamos los niveles del dataset para que se replique en el gráfico
resultados_dip_2018$party_long <- factor(as.character(resultados_dip_2018$party_long), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"), labels = c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
1.6. Creamos objeto de ggparliament.
diputados_2018_gral<- ggparliament::parliament_data(resultados_dip_2018, #datos
type = "semicircle", # forma del hemiciclo
parl_rows =8, # cantidad de filas
party_seats = resultados_dip_2018$seats, # número de bancas
plot_order = resultados_dip_2018$orden) %>% #orden de partidos en hemiciclo
mutate(colour = as.character(colour)) %>% # vector de texto para codigo HEX de colores asignados previamente
as_tibble()
1.7. Graficamos el hemiciclo.
grafico_diputados_2018 <- diputados_2018_gral %>% as_tibble() %>%
ggplot(aes(x, y, color = party_long, text = paste0("Diputadx: ", nombre_diputado, "\n", "Provincia: ", provincia, "\n", "Orientación: ", orientación , "\n", "Voto: ", party_long))) +
geom_parliament_seats(size = 4) + # tamaño de bancas (puntos)
geom_highlight_government(government == 1, colour = "black", size = 4) + # circulo negro al oficialismo
geom_parliament_bar(colour = colour, party = party_long, label = T) + # barra con proporción de bancas
draw_majoritythreshold(n = 128, label = F, type = "semicircle", linesize = 0.5) + # dibuja el limite de mayoría
scale_y_continuous(labels = scales::percent) +
scale_colour_manual(values = diputados_2018_gral$colour, #asigno colores
limits = diputados_2018_gral$party_long) +
labs(title = "Proyecto de ley de Interrupcion Voluntaria del Embarazo",
subtitle = "Votación en Diputadxs - Año 2018",
x = "",
y = "",
caption = "Fuente: Cámara de Diputados de la Nación",
colour = NULL) +
theme_minimal() +
theme(panel.grid = element_blank(),
axis.text = element_blank(),
legend.text = element_text(size = 10),
legend.position = c(0.9, 0.7)
)
## Warning: Ignoring unknown aesthetics: text
grafico_diputados_2018
1.8. Lo pasamos a modo interactivo con ggplotly.
## Creamos el ggplotly ##
grafico_diputados_2018_plotly <- ggplotly(grafico_diputados_2018, tooltip = "text")%>%
layout(title = list(text = paste0('Proyecto de ley de Interrupcion Voluntaria del Embarazo',
'<br>',
'<sup>',
'Votación en Diputadxs - Año 2018',
'</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.3,
y = -0.03,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomTextRepel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues
grafico_diputados_2018_plotly
1. Resultados de votaciones en Senadorxs 2018
1.9. Importamos el dataset de resultados de votaciones en Senadorxs 2018
votaciones_sen_2018 <- read.csv("C:/Documents and Settings/emili/Documents/EMILIA/R/EANT - SOCIAL DATA ANALYTICS/EANT - GRUPO IVE/votaciones_sen_2018_lanacion.csv", sep = ",", encoding = "UTF-8")
1.10. Revisamos el dataset.
View(votaciones_sen_2018)
glimpse(votaciones_sen_2018)
## Rows: 72
## Columns: 11
## $ X.U.FEFF.diputado_id <int> 920, 440, 945, 947, 898, 908, 290, 907, 270, 2...
## $ Diputado <chr> "Crexell., Carmen Lucila", "Perotti., Omar Án...
## $ Provincia <chr> "NEUQUÉN", "SANTA FE", "MENDOZA", "CHUBUT", "S...
## $ Partido <chr> "", "", "", "", "", "", "", "", "", "", "", ""...
## $ Orientación <chr> "Otros", "PJ ", "Cambiemos", "PJ ", "Kirchneri...
## $ Voto <chr> "ABSTENCION", "ABSTENCION", "AFIRMATIVO", "AFI...
## $ ley_id <int> 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737...
## $ Nombre.Ley <chr> "Legalización del aborto", "Legalización del a...
## $ Fecha <chr> "09/08/2018", "09/08/2018", "09/08/2018", "09/...
## $ Acta.votación <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
## $ Texto.Ley <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
colnames(votaciones_sen_2018)
## [1] "X.U.FEFF.diputado_id" "Diputado" "Provincia"
## [4] "Partido" "Orientación" "Voto"
## [7] "ley_id" "Nombre.Ley" "Fecha"
## [10] "Acta.votación" "Texto.Ley"
1.11. Seleccionamos las variables que necesitamos y quitamos el registro del presidente de la cámara.
resultados_sen_2018 <- votaciones_sen_2018 %>%
select(Diputado, Provincia, Orientación, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
1.12. Renombramos las siguientes columnas
colnames(resultados_sen_2018)[1] <- "nombre_diputado"
colnames(resultados_sen_2018)[2] <- "provincia"
colnames(resultados_sen_2018)[3] <- "orientación"
colnames(resultados_sen_2018)[4] <- "party_long"
#Renombramos voto por party_long para graficar con ggparliament, se suele usar para colorear la pertenencia partidaria pero en este caso lo rellenaremos por tipo de voto
1.13. Creamos las variables de cantidad de asientos, color, orden y gobierno para poder graficar con el paquete ggparliament.
#Columna seats
resultados_sen_2018 <- resultados_sen_2018 %>% mutate(
seats = case_when(
party_long == "AFIRMATIVO" ~ "1",
party_long == "ABSTENCION" ~ "1",
party_long == "AUSENTE" ~ "1",
party_long == "NEGATIVO" ~ "1",
))
resultados_sen_2018$seats <- as.double(resultados_sen_2018$seats)
#Columna colour
resultados_sen_2018 <- resultados_sen_2018 %>% mutate(
colour = case_when(
party_long == "AFIRMATIVO" ~ "#58eb34",
party_long == "ABSTENCION" ~ "#ebe834",
party_long == "AUSENTE" ~ "#9c9c91",
party_long == "NEGATIVO" ~ "#eb3a34",
))
#Creamos la columna orden para manifestar el orden en que deberá aparecer en el gráfico
resultados_sen_2018 <- resultados_sen_2018 %>% mutate(
orden = case_when(
party_long == "AUSENTE" ~ "1",
party_long == "ABSTENCION" ~ "2",
party_long == "NEGATIVO" ~ "3",
party_long == "AFIRMATIVO" ~ "4",
))
resultados_sen_2018$orden <- as.double(resultados_sen_2018$orden)
#Creamos la columna government, para que despues pueda contornear al que tenga la mayoria de votos
resultados_sen_2018 <- resultados_sen_2018 %>% mutate(
government = case_when(
party_long == "AFIRMATIVO" ~ "0",
party_long == "ABSTENCION" ~ "0",
party_long == "AUSENTE" ~ "0",
party_long == "NEGATIVO" ~ "1",
))
# Ordenamos los niveles del dataset para que se replique en el gráfico
resultados_sen_2018$party_long <- factor(as.character(resultados_sen_2018$party_long), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"), labels = c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
1.14. Creamos objeto de ggparliament.
senadores_2018_gral<- ggparliament::parliament_data(resultados_sen_2018, #datos
type = "semicircle", # forma del hemiciclo
parl_rows = 4, # cantidad de filas
party_seats = resultados_sen_2018$seats, # número de bancas
plot_order = resultados_sen_2018$orden) %>% #orden de partidos en hemiciclo
mutate(colour = as.character(colour)) %>% # vector de texto para codigo HEX de colores asignados previamente
as_tibble()
1.15. Graficamos el hemiciclo.
grafico_senadores_2018 <- senadores_2018_gral %>% as_tibble() %>%
ggplot(aes(x, y, color = party_long, text = paste0("Senador/a: ", nombre_diputado, "\n", "Provincia: ", provincia, "\n", "Orientación: ", orientación , "\n", "Voto: ", party_long))) +
geom_parliament_seats(size = 8) + # tamaño de bancas (puntos)
geom_highlight_government(government == 1, colour = "black", size = 8) + # circulo negro al oficialismo
geom_parliament_bar(colour = colour, party = party_long, label = T) + # barra con proporción de bancas
draw_majoritythreshold(n = 36, label = F, type = "semicircle", linesize = 0.5) + # dibuja el limite de mayoría
scale_colour_manual(values = senadores_2018_gral$colour, #asigno colores
limits = senadores_2018_gral$party_long) +
labs(title = "Proyecto de ley de Interrupcion Voluntaria del Embarazo",
subtitle = "Votación en Senadorxs - Año 2018",
x = "",
y = "",
caption = "Fuente: Cámara de Senadores de la Nación",
colour = NULL) +
theme_minimal() +
theme(panel.grid = element_blank(),
axis.text = element_blank(),
legend.text = element_text(size = 10),
legend.position = c(0.9, 0.7)
)
## Warning: Ignoring unknown aesthetics: text
grafico_senadores_2018
1.16. Lo pasamos a modo interactivo con ggplotly.
## Creamos el ggplotly ##
grafico_senadores_2018_plotly <- ggplotly(grafico_senadores_2018, tooltip = "text")%>%
layout(title = list(text = paste0('Proyecto de ley de Interrupcion Voluntaria del Embarazo',
'<br>',
'<sup>',
'Votación en Senadorxs - Año 2018',
'</sup>')),
legend = list(orientation = "v", x = 1, y = 1, size = 10),
annotations = list(x = 1.3,
y = -0.05,
text = "Fuente: Cámara de Senadores de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=11, color="black")))
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomTextRepel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues
grafico_senadores_2018_plotly
1. Resultados de votaciones en Diputadxs 2020
1.17. Importamos el dataset de resultados de votaciones en Diputadxs 2020
votaciones_dip_2020 <- read.csv("C:/Documents and Settings/emili/Documents/EMILIA/R/EANT - SOCIAL DATA ANALYTICS/EANT - GRUPO IVE/votaciones_dip_2020_lanacion.csv", sep = ",", encoding = "UTF-8")
1.18. Revisamos el dataset.
View(votaciones_dip_2020)
glimpse(votaciones_dip_2020)
## Rows: 257
## Columns: 11
## $ X.U.FEFF.diputado_id <int> 669, 866, 153, 1354, 1436, 1445, 1379, 1419, 1...
## $ Diputado <chr> "Massa, Sergio", "Patiño., José Luis", "Corne...
## $ Provincia <chr> "BUENOS AIRES", "CDAD. AUT. BS. AS.", "MENDOZA...
## $ Partido <chr> "FRENTE DE TODOS", "PRO", "UNIÓN CÍVICA RADICA...
## $ Orientación <chr> "Kirchnerismo/PJ", "Cambiemos", "Cambiemos", "...
## $ Voto <chr> "", "ABSTENCION", "ABSTENCION", "ABSTENCION", ...
## $ ley_id <int> 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180...
## $ Nombre.Ley <chr> "Legalización del aborto", "Legalización del a...
## $ Fecha <chr> "11/12/2020", "11/12/2020", "11/12/2020", "11/...
## $ Acta.votación <chr> "https://votaciones.hcdn.gob.ar/votacion/4077"...
## $ Texto.Ley <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
colnames(votaciones_dip_2020)
## [1] "X.U.FEFF.diputado_id" "Diputado" "Provincia"
## [4] "Partido" "Orientación" "Voto"
## [7] "ley_id" "Nombre.Ley" "Fecha"
## [10] "Acta.votación" "Texto.Ley"
1.19. Seleccionamos las variables que necesitamos y quitamos el registro del presidente de la cámara.
resultados_dip_2020 <- votaciones_dip_2020 %>%
select(Diputado, Provincia, Orientación, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
1.20. Renombramos las siguientes columnas
colnames(resultados_dip_2020)[1] <- "nombre_diputado"
colnames(resultados_dip_2020)[2] <- "provincia"
colnames(resultados_dip_2020)[3] <- "orientación"
colnames(resultados_dip_2020)[4] <- "party_long"
#Renombramos voto por party_long para graficar con ggparliament, se suele usar para colorear la pertenencia partidaria pero en este caso lo rellenaremos por tipo de voto
1.21. Creamos las variables de cantidad de asientos, color, orden y gobierno para poder graficar con el paquete ggparliament.
#Columna seats
resultados_dip_2020 <- resultados_dip_2020 %>% mutate(
seats = case_when(
party_long == "AFIRMATIVO" ~ "1",
party_long == "ABSTENCION" ~ "1",
party_long == "AUSENTE" ~ "1",
party_long == "NEGATIVO" ~ "1",
))
resultados_dip_2020$seats <- as.double(resultados_dip_2020$seats)
#Columna colour
resultados_dip_2020 <- resultados_dip_2020 %>% mutate(
colour = case_when(
party_long == "AFIRMATIVO" ~ "#58eb34",
party_long == "ABSTENCION" ~ "#ebe834",
party_long == "AUSENTE" ~ "#9c9c91",
party_long == "NEGATIVO" ~ "#eb3a34",
))
#Creamos la columna orden para manifestar el orden en que deberá aparecer en el gráfico
resultados_dip_2020 <- resultados_dip_2020 %>% mutate(
orden = case_when(
party_long == "AUSENTE" ~ "1",
party_long == "ABSTENCION" ~ "2",
party_long == "NEGATIVO" ~ "3",
party_long == "AFIRMATIVO" ~ "4",
))
resultados_dip_2020$orden <- as.double(resultados_dip_2020$orden)
#Creamos la columna government, para que despues pueda contornear al que tenga la mayoria de votos
resultados_dip_2020 <- resultados_dip_2020 %>% mutate(
government = case_when(
party_long == "AFIRMATIVO" ~ "1",
party_long == "ABSTENCION" ~ "0",
party_long == "AUSENTE" ~ "0",
party_long == "NEGATIVO" ~ "0",
))
# Ordenamos los niveles del dataset para que se replique en el gráfico
resultados_dip_2020$party_long <- factor(as.character(resultados_dip_2020$party_long), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"), labels = c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
1.22. Creamos objeto de ggparliament.
diputados_2020_gral<- ggparliament::parliament_data(resultados_dip_2020, #datos
type = "semicircle", # forma del hemiciclo
parl_rows =8, # cantidad de filas
party_seats = resultados_dip_2020$seats, # número de bancas
plot_order = resultados_dip_2020$orden) %>% #orden de partidos en hemiciclo
mutate(colour = as.character(colour)) %>% # vector de texto para codigo HEX de colores asignados previamente
as_tibble()
1.23. Graficamos el hemiciclo.
grafico_diputados_2020 <- diputados_2020_gral %>% as_tibble() %>%
ggplot(aes(x, y, color = party_long, text = paste0("Diputadx: ", nombre_diputado, "\n", "Provincia: ", provincia, "\n", "Orientación: ", orientación , "\n", "Voto: ", party_long))) +
geom_parliament_seats(size = 4) + # tamaño de bancas (puntos)
geom_highlight_government(government == 1, colour = "black", size = 4) + # circulo negro al oficialismo
geom_parliament_bar(colour = colour, party = party_long, label = T) + # barra con proporción de bancas
draw_majoritythreshold(n = 128, label = F, type = "semicircle", linesize = 0.5) + # dibuja el limite de mayoría
scale_y_continuous(labels = scales::percent) +
scale_colour_manual(values = diputados_2020_gral$colour, #asigno colores
limits = diputados_2020_gral$party_long) +
labs(title = "Proyecto de ley de Interrupcion Voluntaria del Embarazo",
subtitle = "Votación en Diputadxs - Año 2020",
x = "",
y = "",
caption = "Fuente: Cámara de Diputados de la Nación",
colour = NULL) +
theme_minimal() +
theme(panel.grid = element_blank(),
axis.text = element_blank(),
legend.text = element_text(size = 10),
legend.position = c(0.9, 0.7)
)
## Warning: Ignoring unknown aesthetics: text
grafico_diputados_2020
1.24. Lo pasamos a modo interactivo con ggplotly.
## Creamos el ggplotly ##
grafico_diputados_2020_plotly <- ggplotly(grafico_diputados_2020, tooltip = "text")%>%
layout(title = list(text = paste0('Proyecto de ley de Interrupcion Voluntaria del Embarazo',
'<br>',
'<sup>',
'Votación en Diputadxs - Año 2020',
'</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.3,
y = -0.03,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomTextRepel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues
grafico_diputados_2020_plotly
1. Resultados de votaciones en Senadorxs 2020
1.25. Importamos el dataset de resultados de votaciones en Senadorxs 2018
votaciones_sen_2020 <- read.csv("C:/Documents and Settings/emili/Documents/EMILIA/R/EANT - SOCIAL DATA ANALYTICS/EANT - GRUPO IVE/votaciones_sen_2020_lanacion.csv", sep = ",", encoding = "UTF-8")
1.26. Revisamos el dataset.
View(votaciones_sen_2020)
glimpse(votaciones_sen_2020)
## Rows: 72
## Columns: 11
## $ X.U.FEFF.diputado_id <int> 808, 512, 1455, 910, 782, 446, 1449, 935, 920,...
## $ Diputado <chr> "Snopek., Guillermo", "Sapag, Silvia Estela",...
## $ Provincia <chr> "JUJUY", "NEUQUÉN", "", "LA PAMPA", "RIO NEGRO...
## $ Partido <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
## $ Orientación <chr> "Kirchnerismo/PJ", "Kirchnerismo/PJ", "Kirchne...
## $ Voto <chr> "", "AFIRMATIVO", "AFIRMATIVO", "AFIRMATIVO", ...
## $ ley_id <int> 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198...
## $ Nombre.Ley <chr> "Legalización del aborto", "Legalización del a...
## $ Fecha <chr> "29/12/2020", "29/12/2020", "29/12/2020", "29/...
## $ Acta.votación <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
## $ Texto.Ley <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
colnames(votaciones_sen_2020)
## [1] "X.U.FEFF.diputado_id" "Diputado" "Provincia"
## [4] "Partido" "Orientación" "Voto"
## [7] "ley_id" "Nombre.Ley" "Fecha"
## [10] "Acta.votación" "Texto.Ley"
1.27. Seleccionamos las variables que necesitamos y quitamos el registro del presidente de la cámara.
# Reasignamos el voto de Snopek a ABSTENCION
votaciones_sen_2020$Voto[1]= "ABSTENCION"
resultados_sen_2020 <- votaciones_sen_2020 %>%
select(Diputado, Provincia, Orientación, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
1.28. Renombramos las siguientes columnas
colnames(resultados_sen_2020)[1] <- "nombre_diputado"
colnames(resultados_sen_2020)[2] <- "provincia"
colnames(resultados_sen_2020)[3] <- "orientación"
colnames(resultados_sen_2020)[4] <- "party_long"
#Renombramos voto por party_long para graficar con ggparliament, se suele usar para colorear la pertenencia partidaria pero en este caso lo rellenaremos por tipo de voto
1.29. Creamos las variables de cantidad de asientos, color, orden y gobierno para poder graficar con el paquete ggparliament.
#Columna seats
resultados_sen_2020 <- resultados_sen_2020 %>% mutate(
seats = case_when(
party_long == "AFIRMATIVO" ~ "1",
party_long == "ABSTENCION" ~ "1",
party_long == "AUSENTE" ~ "1",
party_long == "NEGATIVO" ~ "1",
))
resultados_sen_2020$seats <- as.double(resultados_sen_2020$seats)
#Columna colour
resultados_sen_2020 <- resultados_sen_2020 %>% mutate(
colour = case_when(
party_long == "AFIRMATIVO" ~ "#58eb34",
party_long == "ABSTENCION" ~ "#ebe834",
party_long == "AUSENTE" ~ "#9c9c91",
party_long == "NEGATIVO" ~ "#eb3a34",
))
#Creamos la columna orden para manifestar el orden en que deberá aparecer en el gráfico
resultados_sen_2020 <- resultados_sen_2020 %>% mutate(
orden = case_when(
party_long == "AUSENTE" ~ "1",
party_long == "ABSTENCION" ~ "2",
party_long == "NEGATIVO" ~ "3",
party_long == "AFIRMATIVO" ~ "4",
))
resultados_sen_2020$orden <- as.double(resultados_sen_2020$orden)
#Creamos la columna government, para que despues pueda contornear al que tenga la mayoria de votos
resultados_sen_2020 <- resultados_sen_2020 %>% mutate(
government = case_when(
party_long == "AFIRMATIVO" ~ "1",
party_long == "ABSTENCION" ~ "0",
party_long == "AUSENTE" ~ "0",
party_long == "NEGATIVO" ~ "0",
))
# Ordenamos los niveles del dataset para que se replique en el gráfico
resultados_sen_2020$party_long <- factor(as.character(resultados_sen_2020$party_long), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"), labels = c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
1.30. Creamos objeto de ggparliament.
senadores_2020_gral<- ggparliament::parliament_data(resultados_sen_2020, #datos
type = "semicircle", # forma del hemiciclo
parl_rows = 4, # cantidad de filas
party_seats = resultados_sen_2020$seats, # número de bancas
plot_order = resultados_sen_2020$orden) %>% #orden de partidos en hemiciclo
mutate(colour = as.character(colour)) %>% # vector de texto para codigo HEX de colores asignados previamente
as_tibble()
1.31. Graficamos el hemiciclo.
grafico_senadores_2020 <- senadores_2020_gral %>% as_tibble() %>%
ggplot(aes(x, y, color = party_long, text = paste0("Senador/a: ", nombre_diputado, "\n", "Provincia: ", provincia, "\n", "Orientación: ", orientación , "\n", "Voto: ", party_long))) +
geom_parliament_seats(size = 8) + # tamaño de bancas (puntos)
geom_highlight_government(government == 1, colour = "black", size = 8) + # circulo negro al oficialismo
geom_parliament_bar(colour = colour, party = party_long, label = T) + # barra con proporción de bancas
draw_majoritythreshold(n = 36, label = F, type = "semicircle", linesize = 0.5) + # dibuja el limite de mayoría
scale_colour_manual(values = senadores_2020_gral$colour, #asigno colores
limits = senadores_2020_gral$party_long) +
labs(title = "Proyecto de ley de Interrupcion Voluntaria del Embarazo",
subtitle = "Votación en Senadorxs - Año 2020",
x = "",
y = "",
caption = "Fuente: Cámara de Senadores de la Nación",
colour = NULL) +
theme_minimal() +
theme(panel.grid = element_blank(),
axis.text = element_blank(),
legend.text = element_text(size = 10),
legend.position = c(0.9, 0.7)
)
## Warning: Ignoring unknown aesthetics: text
grafico_senadores_2020
1.32. Lo pasamos a modo interactivo con ggplotly.
## Creamos el ggplotly ##
grafico_senadores_2020_plotly <- ggplotly(grafico_senadores_2020, tooltip = "text")%>%
layout(title = list(text = paste0('Proyecto de ley de Interrupcion Voluntaria del Embarazo',
'<br>',
'<sup>',
'Votación en Senadorxs - Año 2020',
'</sup>')),
legend = list(orientation = "v", x = 1, y = 1, size = 10),
annotations = list(x = 1.3,
y = -0.05,
text = "Fuente: Cámara de Senadores de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=11, color="black")))
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomTextRepel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues
grafico_senadores_2020_plotly
2. Resultados de votaciones en Diputadxs 2018 según Orientación Política
2.1 Seleccionamos las variables que necesitamos y quitamos el registro del presidente de la cámara.
dip_orienpol_2018 <- votaciones_dip_2018 %>%
select(Diputado, Orientación, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
dip_orienpol_2018$Orientación <- toupper(dip_orienpol_2018$Orientación) # Pasamos categorías en mayúsculas
dip_orienpol_2018 <- transform(dip_orienpol_2018,
Orientación=revalue(Orientación,c("PJ "="PJ"))) # Corregimos categoría PJ
2.2 Agrupamos votos por orientación política y calculamos su porcentaje.
dip_orienpol_2018 <- dip_orienpol_2018 %>%
dplyr::count(Orientación, Voto, sort = F)%>%
rename(Cantidad = n) %>%
group_by(Orientación) %>%
mutate(Porcentaje = (round(Cantidad/sum(Cantidad) * 100, 2))) %>%
transform(Voto = reorder(Voto, -Cantidad))
# Reordeno variables para el gráfico
dip_orienpol_2018$Orientación <- factor(dip_orienpol_2018$Orientación, levels=c("OTROS","IZQUIERDA","MASSISMO Y ALIADOS", "PJ", "KIRCHNERISMO Y ALIADOS","CAMBIEMOS"))
dip_orienpol_2018
## Orientación Voto Cantidad Porcentaje
## 1 CAMBIEMOS AFIRMATIVO 42 39.25
## 2 CAMBIEMOS NEGATIVO 65 60.75
## 3 IZQUIERDA AFIRMATIVO 3 100.00
## 4 KIRCHNERISMO Y ALIADOS AFIRMATIVO 55 85.94
## 5 KIRCHNERISMO Y ALIADOS AUSENTE 1 1.56
## 6 KIRCHNERISMO Y ALIADOS NEGATIVO 8 12.50
## 7 MASSISMO Y ALIADOS AFIRMATIVO 9 42.86
## 8 MASSISMO Y ALIADOS NEGATIVO 12 57.14
## 9 OTROS AFIRMATIVO 6 28.57
## 10 OTROS NEGATIVO 15 71.43
## 11 PJ ABSTENCION 1 2.50
## 12 PJ AFIRMATIVO 14 35.00
## 13 PJ NEGATIVO 25 62.50
2.3. Armamos un gráfico con las proporciones de tipos de voto para cada orientación.
dip_orienpol_2018_plot <- ggplot(dip_orienpol_2018,
aes(x = Orientación, y = Cantidad, p = Porcentaje, fill = Voto, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Voto))) +
geom_bar(position="fill", stat = 'identity') +
scale_y_continuous(labels = scales::percent) +
scale_fill_manual(values = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) +
labs(title = "Resultados de votación del proyecto IVE en Diputadxs por tipo de Voto",
subtitle = "Año 2018",
caption = "Fuente: Cámara de Diputados de la Nación",
x = "Orientación Política",
y = "Cantidad") +
theme_minimal() +
coord_flip ()
2.4. Agregamos los titulos, subtitulos y fuentes al plotly
dip_orienpol_2018_plotly <- ggplotly(dip_orienpol_2018_plot, tooltip = "text") %>% layout(title = list(text = paste0('Resultados de votación del proyecto IVE en Diputadxs','<br>', '<sup>', 'Año 2018', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.12,
y = -0.09,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
dip_orienpol_2018_plotly
2. Resultados de votaciones en Senadorxs 2018 según Orientación Política
2.5 Seleccionamos las variables que necesitamos y quitamos el registro del presidente de la cámara.
sen_orienpol_2018 <- votaciones_sen_2018 %>%
select(Diputado, Orientación, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
sen_orienpol_2018$Orientación <- toupper(sen_orienpol_2018$Orientación) # Pasamos categorías en mayúsculas
sen_orienpol_2018 <- transform(sen_orienpol_2018,
Orientación=revalue(Orientación,c("PJ "="PJ"))) # Corregimos categoría PJ
2.6 Agrupamos votos por orientación política.
sen_orienpol_2018 <- sen_orienpol_2018 %>%
dplyr::count(Orientación, Voto, sort = F)%>%
rename(Cantidad = n) %>%
group_by(Orientación) %>%
mutate(Porcentaje = (round(Cantidad/sum(Cantidad) * 100, 2))) %>%
transform(Voto = reorder(Voto, -Cantidad))
# Reordeno variables para el gráfico
sen_orienpol_2018$Orientación <- factor(sen_orienpol_2018$Orientación, levels=c("OTROS","PJ", "KIRCHNERISMO Y ALIADOS","CAMBIEMOS"))
sen_orienpol_2018$Voto <- factor(as.character(sen_orienpol_2018$Voto), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
sen_orienpol_2018
## Orientación Voto Cantidad Porcentaje
## 1 CAMBIEMOS AFIRMATIVO 8 32.00
## 2 CAMBIEMOS NEGATIVO 17 68.00
## 3 KIRCHNERISMO Y ALIADOS AFIRMATIVO 8 88.89
## 4 KIRCHNERISMO Y ALIADOS NEGATIVO 1 11.11
## 5 OTROS ABSTENCION 1 7.14
## 6 OTROS AFIRMATIVO 3 21.43
## 7 OTROS AUSENTE 1 7.14
## 8 OTROS NEGATIVO 9 64.29
## 9 PJ ABSTENCION 1 4.17
## 10 PJ AFIRMATIVO 12 50.00
## 11 PJ NEGATIVO 11 45.83
2.7. Armamos un gráfico con las proporciones de tipos de voto para cada orientación.
sen_orienpol_2018_plot <- ggplot(sen_orienpol_2018,
aes(x = Orientación, y = Cantidad, p = Porcentaje, fill = Voto, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Voto))) +
geom_bar(position="fill", stat = 'identity') +
scale_y_continuous(labels = scales::percent) +
scale_fill_manual(values = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) +
labs(title = "Resultados de votación del proyecto IVE en Senadorxs por tipo de Voto",
subtitle = "Año 2018",
caption = "Fuente: Cámara de Senadores de la Nación",
x = "Orientación Política",
y = "Cantidad") +
theme_minimal() +
coord_flip ()
2.8. Agregamos los titulos, subtitulos y fuentes al plotly
sen_orienpol_2018_plotly <- ggplotly(sen_orienpol_2018_plot, tooltip = "text") %>% layout(title = list(text = paste0('Resultados de votación del proyecto IVE en Senadorxs','<br>', '<sup>', 'Año 2018', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.12,
y = -0.09,
text = "Fuente: Cámara de Senadores de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
sen_orienpol_2018_plotly
2. Resultados de votaciones en Diputadxs 2020 según Orientación Política
2.9. Seleccionamos las variables que necesitamos y quitamos el registro del presidente de la cámara.
dip_orienpol_2020 <- votaciones_dip_2020 %>%
select(Diputado, Orientación, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
dip_orienpol_2020$Orientación <- toupper(dip_orienpol_2020$Orientación) # Pasamos categorías en mayúsculas
2.10. Agrupamos votos por orientación política y calculamos su porcentaje.
dip_orienpol_2020 <- dip_orienpol_2020 %>%
dplyr::count(Orientación, Voto, sort = F)%>%
rename(Cantidad = n) %>%
group_by(Orientación) %>%
mutate(Porcentaje = (round(Cantidad/sum(Cantidad) * 100, 2))) %>%
transform(Voto = reorder(Voto, -Cantidad))
# Reordeno variables para el gráfico
dip_orienpol_2020$Orientación <- factor(dip_orienpol_2020$Orientación, levels=c("OTROS","IZQUIERDA","CONSENSO FEDERAL / PJ NO K", "KIRCHNERISMO/PJ","CAMBIEMOS"))
dip_orienpol_2020
## Orientación Voto Cantidad Porcentaje
## 1 CAMBIEMOS ABSTENCION 3 2.59
## 2 CAMBIEMOS AFIRMATIVO 42 36.21
## 3 CAMBIEMOS AUSENTE 1 0.86
## 4 CAMBIEMOS NEGATIVO 70 60.34
## 5 CONSENSO FEDERAL / PJ NO K AFIRMATIVO 2 18.18
## 6 CONSENSO FEDERAL / PJ NO K NEGATIVO 9 81.82
## 7 IZQUIERDA AFIRMATIVO 2 100.00
## 8 KIRCHNERISMO/PJ ABSTENCION 3 2.54
## 9 KIRCHNERISMO/PJ AFIRMATIVO 83 70.34
## 10 KIRCHNERISMO/PJ AUSENTE 1 0.85
## 11 KIRCHNERISMO/PJ NEGATIVO 31 26.27
## 12 OTROS AFIRMATIVO 2 22.22
## 13 OTROS NEGATIVO 7 77.78
2.11. Armamos un gráfico con las proporciones de tipos de voto para cada orientación.
dip_orienpol_2020_plot <- ggplot(dip_orienpol_2020,
aes(x = Orientación, y = Cantidad, p = Porcentaje, fill = Voto, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Voto))) +
geom_bar(position="fill", stat = 'identity') +
scale_y_continuous(labels = scales::percent) +
scale_fill_manual(values = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) +
labs(title = "Resultados de votación del proyecto IVE en Diputadxs por tipo de Voto",
subtitle = "Año 2020",
caption = "Fuente: Cámara de Diputados de la Nación",
x = "Orientación Política",
y = "Cantidad") +
theme_minimal() +
coord_flip ()
2.12. Agregamos los titulos, subtitulos y fuentes al plotly
dip_orienpol_2020_plotly <- ggplotly(dip_orienpol_2020_plot, tooltip = "text") %>% layout(title = list(text = paste0('Resultados de votación del proyecto IVE en Diputadxs','<br>', '<sup>', 'Año 2020', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.12,
y = -0.09,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
dip_orienpol_2020_plotly
2. Resultados de votaciones en Senadorxs 2020 según Orientación Política
2.13. Seleccionamos las variables que necesitamos y quitamos el registro del presidente de la cámara.
sen_orienpol_2020 <- votaciones_sen_2020 %>%
select(Diputado, Orientación, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
sen_orienpol_2020$Orientación <- toupper(sen_orienpol_2020$Orientación) # Pasamos categorías en mayúsculas
2.14. Agrupamos votos por orientación política.
sen_orienpol_2020 <- sen_orienpol_2020 %>%
dplyr::count(Orientación, Voto, sort = F)%>%
rename(Cantidad = n) %>%
group_by(Orientación) %>%
mutate(Porcentaje = (round(Cantidad/sum(Cantidad) * 100, 2))) %>%
transform(Voto = reorder(Voto, -Cantidad))
# Reordeno variables para el gráfico
sen_orienpol_2020$Orientación <- factor(sen_orienpol_2020$Orientación, levels=c("OTROS", "KIRCHNERISMO/PJ","CAMBIEMOS"))
sen_orienpol_2020$Voto <- factor(as.character(sen_orienpol_2020$Voto), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
sen_orienpol_2020
## Orientación Voto Cantidad Porcentaje
## 1 CAMBIEMOS AFIRMATIVO 11 39.29
## 2 CAMBIEMOS AUSENTE 1 3.57
## 3 CAMBIEMOS NEGATIVO 16 57.14
## 4 KIRCHNERISMO/PJ ABSTENCION 1 2.44
## 5 KIRCHNERISMO/PJ AFIRMATIVO 25 60.98
## 6 KIRCHNERISMO/PJ AUSENTE 3 7.32
## 7 KIRCHNERISMO/PJ NEGATIVO 12 29.27
## 8 OTROS AFIRMATIVO 2 66.67
## 9 OTROS NEGATIVO 1 33.33
2.15. Armamos un gráfico con las proporciones de tipos de voto para cada orientación.
sen_orienpol_2020_plot <- ggplot(sen_orienpol_2020,
aes(x = Orientación, y = Cantidad, p = Porcentaje, fill = Voto, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Voto))) +
geom_bar(position="fill", stat = 'identity') +
scale_y_continuous(labels = scales::percent) +
scale_fill_manual(values = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) +
labs(title = "Resultados de votación del proyecto IVE en Senadorxs por tipo de Voto",
subtitle = "Año 2020",
caption = "Fuente: Cámara de Senadores de la Nación",
x = "Orientación Política",
y = "Cantidad") +
theme_minimal() +
coord_flip ()
2.16. Agregamos los titulos, subtitulos y fuentes al plotly
sen_orienpol_2020_plotly <- ggplotly(sen_orienpol_2020_plot, tooltip = "text") %>% layout(title = list(text = paste0('Resultados de votación del proyecto IVE en Senadorxs','<br>', '<sup>', 'Año 2020', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.12,
y = -0.09,
text = "Fuente: Cámara de Senadores de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
sen_orienpol_2020_plotly
3. Resultados de votaciones en Diputadxs 2018 según Provincias
3.1. Limpiamos el dataset original seleccionando las variables y filtrando por posiciones emitidas.
resul_dip18 <- votaciones_dip_2018 %>%
select(Diputado, Provincia, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
#Renombramos registros de CABA
resul_dip18$Provincia[resul_dip18$Provincia == 'CDAD. AUT. BS. AS.'] <- 'C.A.B.A.'
3.2. Cambiamos las clases de las variables.
# Se cambia la clase de variables "Provincia" y "Voto" de character a factor
class(resul_dip18$Provincia)
## [1] "character"
resul_dip18$Provincia <- as.factor(resul_dip18$Provincia)
class(resul_dip18$Voto)
## [1] "character"
resul_dip18$Voto <- as.factor(resul_dip18$Voto)
3.3. Construimos las tablas que necesitamos para graficar. Tabla 1 - votos
table(resul_dip18$Voto)
##
## ABSTENCION AFIRMATIVO AUSENTE NEGATIVO
## 1 129 1 125
#Lo anterior lo pasamos a un data:
Dip18_voto <- as.data.frame(table(resul_dip18$Voto))
#Se crea una nueva variable con los porcentajes de los votos
Dip18_voto$pct <- (Dip18_voto$Freq/257)*100
#Reducimos los decimales de la variable %
Dip18_voto$pct <- round(Dip18_voto$pct,2)
#Se renombran las variables
colnames(Dip18_voto) <- c("Voto", "Numero", "Porcentaje")
Dip18_voto
## Voto Numero Porcentaje
## 1 ABSTENCION 1 0.39
## 2 AFIRMATIVO 129 50.19
## 3 AUSENTE 1 0.39
## 4 NEGATIVO 125 48.64
Tabla 2 - Dip por provincia
table(resul_dip18$Provincia)
##
## BUENOS AIRES C.A.B.A. CATAMARCA CHACO
## 69 25 5 7
## CHUBUT CÓRDOBA CORRIENTES ENTRE RÍOS
## 5 18 7 9
## FORMOSA JUJUY LA PAMPA LA RIOJA
## 5 6 5 5
## MENDOZA MISIONES NEUQUÉN RIO NEGRO
## 10 7 5 5
## SALTA SAN JUAN SAN LUIS SANTA CRUZ
## 7 6 5 5
## SANTA FE SANTIAGO DEL ESTERO TIERRA DEL FUEGO TUCUMÁN
## 19 7 5 9
#Se crea un data del número de dip por provincia:
Dip18_provincia <- as.data.frame(table(resul_dip18$Provincia))
#Se renombran las variables
colnames(Dip18_provincia) <- c("Provincia", "No.Dip")
Dip18_provincia
## Provincia No.Dip
## 1 BUENOS AIRES 69
## 2 C.A.B.A. 25
## 3 CATAMARCA 5
## 4 CHACO 7
## 5 CHUBUT 5
## 6 CÓRDOBA 18
## 7 CORRIENTES 7
## 8 ENTRE RÍOS 9
## 9 FORMOSA 5
## 10 JUJUY 6
## 11 LA PAMPA 5
## 12 LA RIOJA 5
## 13 MENDOZA 10
## 14 MISIONES 7
## 15 NEUQUÉN 5
## 16 RIO NEGRO 5
## 17 SALTA 7
## 18 SAN JUAN 6
## 19 SAN LUIS 5
## 20 SANTA CRUZ 5
## 21 SANTA FE 19
## 22 SANTIAGO DEL ESTERO 7
## 23 TIERRA DEL FUEGO 5
## 24 TUCUMÁN 9
Tabla 3 - Voto según provincia
Dip18_voto_provincia <- resul_dip18 %>%
group_by(Provincia) %>%
dplyr::count(Voto)
#Se renombra las variables
colnames(Dip18_voto_provincia) <- c("Provincia", "Voto", "Frecuencia")
Dip18_voto_provincia
## # A tibble: 46 x 3
## # Groups: Provincia [24]
## Provincia Voto Frecuencia
## <fct> <fct> <int>
## 1 BUENOS AIRES AFIRMATIVO 49
## 2 BUENOS AIRES AUSENTE 1
## 3 BUENOS AIRES NEGATIVO 19
## 4 C.A.B.A. AFIRMATIVO 16
## 5 C.A.B.A. NEGATIVO 9
## 6 CATAMARCA AFIRMATIVO 1
## 7 CATAMARCA NEGATIVO 4
## 8 CHACO AFIRMATIVO 3
## 9 CHACO NEGATIVO 4
## 10 CHUBUT AFIRMATIVO 2
## # ... with 36 more rows
3.4. Concatenación de las tablas en una base.
# Tabla 2 Dip18_provincia + Tabla 3 Dip18_voto_provincia
DipVotoProv18 <- merge(Dip18_provincia, Dip18_voto_provincia)
#Nueva variable con % del voto según el # de dip para cada prov
DipVotoProv18$ptc <- DipVotoProv18$Frecuencia/DipVotoProv18$No.Dip*100
#Reducimos los decimales de la variable %
DipVotoProv18$ptc <- round(DipVotoProv18$ptc,2)
#Se renombra las variables
colnames(DipVotoProv18) <- c("Provincia", "No.Dip", "Voto", "Frecuencia","Porcentaje")
#Se respalda base anterior
Dip18_aborto <- DipVotoProv18
3.5. Creamos grilla de Argentina para mapa geofacet.
argentina_grid2 <- data.frame(
col = c(1, 3, 5, 1, 2, 1, 3, 4, 2, 2, 4, 1, 3, 3, 4, 1, 2, 2, 1, 1, 2, 1, 1, 1),
row = c(1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 8, 9, 10),
code = c("AR-Y", "AR-P", "AR-N", "AR-A", "AR-T", "AR-K", "AR-H", "AR-W", "AR-G", "AR-X", "AR-E", "AR-F", "AR-S", "AR-B", "AR-C", "AR-J", "AR-D", "AR-L", "AR-M", "AR-Q", "AR-R", "AR-U", "AR-Z", "AR-V"),
name_es = c("Jujuy", "Formosa", "Misiones", "Salta", "Tucumán", "Catamarca",
"Chaco", "Corrientes", "S.del.Estero", "Córdoba", "Entre.Ríos", "La.Rioja", "Santa.Fe", "Buenos.Aires", "C.A.B.A.", "San.Juan", "San.Luis", "La.Pampa", "Mendoza", "Neuquén", "Río.Negro", "Chubut", "Santa.Cruz", "T.del.Fuego"), stringsAsFactors = FALSE)
3.6 Igualar el nombre de las provincias.
#Cambiar los nombres de Dip18_aborto$Provincia por argentina_grid2$name_es
unique(argentina_grid2$name_es)
## [1] "Jujuy" "Formosa" "Misiones" "Salta" "Tucumán"
## [6] "Catamarca" "Chaco" "Corrientes" "S.del.Estero" "Córdoba"
## [11] "Entre.Ríos" "La.Rioja" "Santa.Fe" "Buenos.Aires" "C.A.B.A."
## [16] "San.Juan" "San.Luis" "La.Pampa" "Mendoza" "Neuquén"
## [21] "Río.Negro" "Chubut" "Santa.Cruz" "T.del.Fuego"
unique(Dip18_aborto$Provincia)
## [1] BUENOS AIRES C.A.B.A. CATAMARCA
## [4] CHACO CHUBUT CÓRDOBA
## [7] CORRIENTES ENTRE RÍOS FORMOSA
## [10] JUJUY LA PAMPA LA RIOJA
## [13] MENDOZA MISIONES NEUQUÉN
## [16] RIO NEGRO SALTA SAN JUAN
## [19] SAN LUIS SANTA CRUZ SANTA FE
## [22] SANTIAGO DEL ESTERO TIERRA DEL FUEGO TUCUMÁN
## 24 Levels: BUENOS AIRES C.A.B.A. CATAMARCA CHACO CHUBUT CÓRDOBA ... TUCUMÁN
## 1.- Se cambia la clase de factor a character
class(Dip18_aborto$Provincia)
## [1] "factor"
Dip18_aborto$Provincia <- as.character(Dip18_aborto$Provincia)
## 2.- Se renombran las provincias:
Dip18_aborto <- Dip18_aborto %>%
mutate(Provincia = case_when(
Provincia == "TIERRA DEL FUEGO" ~ "T.del.Fuego",
Provincia == "FORMOSA" ~ "Formosa",
Provincia == "SANTIAGO DEL ESTERO" ~ "S.del.Estero",
Provincia == "CORRIENTES" ~ "Corrientes",
Provincia == "SAN JUAN" ~ "San.Juan",
Provincia == "SAN LUIS" ~ "San.Luis",
Provincia == "C.A.B.A." ~ "C.A.B.A.",
Provincia == "RIO NEGRO" ~ "Río.Negro",
Provincia == "JUJUY" ~ "Jujuy",
Provincia == "CHACO" ~ "Chaco",
Provincia == "MISIONES" ~ "Misiones",
Provincia == "LA RIOJA" ~ "La.Rioja",
Provincia == "CÓRDOBA" ~ "Córdoba",
Provincia == "MENDOZA" ~ "Mendoza",
Provincia == "LA PAMPA" ~ "La.Pampa",
Provincia == "CHUBUT" ~ "Chubut",
Provincia == "SALTA" ~ "Salta",
Provincia == "CATAMARCA" ~ "Catamarca",
Provincia == "TUCUMÁN" ~ "Tucumán",
Provincia == "SANTA FE" ~ "Santa.Fe",
Provincia == "ENTRE RÍOS" ~ "Entre.Ríos",
Provincia == "BUENOS AIRES" ~ "Buenos.Aires",
Provincia == "NEUQUÉN" ~ "Neuquén",
Provincia == "SANTA CRUZ" ~ "Santa.Cruz"))
## 3.- Se regresa a factor la clase de variable
Dip18_aborto$Provincia <- as.factor(Dip18_aborto$Provincia)
# Se guarda la base que se usa para hacer los plots
write.csv(Dip18_aborto, "Dip18_aborto.csv")
3.7 Plot Dip 2018
# Cargamos la base para el plot
Dip18_aborto <- read.csv("Dip18_aborto.csv")
# Se debe cargar "argentina_grid2"
# Establecemos orden de niveles para el plot
Dip18_aborto$Voto <- factor(as.character(Dip18_aborto$Voto), levels=c("ABSTENCION", "AFIRMATIVO", "AUSENTE", "NEGATIVO"))
3.8. Graficamos.
Dip18_aborto_plot <- ggplot(Dip18_aborto, aes("", Porcentaje, fill = Voto)) +
geom_col(alpha = 0.8) +
scale_fill_manual(values = c("#ebe834", "#58eb34", "#9c9c91", "#eb3a34"))+
coord_flip() +
facet_geo(~Provincia, grid = "argentina_grid2") +
theme_bw()+
labs(title = "Resultados de la votación del proyecto IVE en Diputados por tipo de voto 2018",
caption = "Fuente: Diputados Argentina",
x = "Porcentaje (%)",
y = NULL)+
theme(strip.text.x = element_text(size = 8))
Dip18_aborto_plot
3. Resultados de votaciones en Senadorxs 2018 según Provincias
3.9. Limpiamos el dataset original seleccionando las variables y filtrando por posiciones emitidas.
resul_sen18 <- votaciones_sen_2018 %>%
select(Diputado, Provincia, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
#Renombramos registros de CABA
resul_sen18$Provincia[resul_sen18$Provincia == 'CDAD. AUT. BS. AS.'] <- 'C.A.B.A.'
resul_sen18$Provincia[70]= "BUENOS AIRES"
3.10. Cambiamos las clases de las variables.
# Se cambia la clase de variables "Provincia" y "Voto" de character a factor
class(resul_sen18$Provincia)
## [1] "character"
resul_sen18$Provincia <- as.factor(resul_sen18$Provincia)
class(resul_sen18$Voto)
## [1] "character"
resul_sen18$Voto <- as.factor(resul_sen18$Voto)
3.11. Construimos las tablas que necesitamos para graficar. Tabla 1 - votos
table(resul_sen18$Voto)
##
## ABSTENCION AFIRMATIVO AUSENTE NEGATIVO
## 2 31 1 38
#Lo anterior lo pasamos a un data:
Sen18_voto <- as.data.frame(table(resul_sen18$Voto))
#Se crea una nueva variable con los porcentajes de los votos
Sen18_voto$pct <- (Sen18_voto$Freq/72)*100
#Reducimos los decimales de la variable %
Sen18_voto$pct <- round(Sen18_voto$pct,2)
#Se renombran las variables
colnames(Sen18_voto) <- c("Voto", "Numero", "Porcentaje")
Sen18_voto
## Voto Numero Porcentaje
## 1 ABSTENCION 2 2.78
## 2 AFIRMATIVO 31 43.06
## 3 AUSENTE 1 1.39
## 4 NEGATIVO 38 52.78
Tabla 2 - Sen por provincia
table(resul_sen18$Provincia)
##
## BUENOS AIRES C.A.B.A. CATAMARCA CHACO
## 3 3 3 3
## CHUBUT CÓRDOBA CORRIENTES ENTRE RÍOS
## 3 3 3 3
## FORMOSA JUJUY LA PAMPA LA RIOJA
## 3 3 3 3
## MENDOZA MISIONES NEUQUÉN RIO NEGRO
## 3 3 3 3
## SALTA SAN JUAN SAN LUIS SANTA CRUZ
## 3 3 3 3
## SANTA FE SANTIAGO DEL ESTERO TIERRA DEL FUEGO TUCUMÁN
## 3 3 3 3
#Se crea un data del número de dip por provincia:
Sen18_provincia <- as.data.frame(table(resul_sen18$Provincia))
#Se renombran las variables
colnames(Sen18_provincia) <- c("Provincia", "No.Dip")
Sen18_provincia
## Provincia No.Dip
## 1 BUENOS AIRES 3
## 2 C.A.B.A. 3
## 3 CATAMARCA 3
## 4 CHACO 3
## 5 CHUBUT 3
## 6 CÓRDOBA 3
## 7 CORRIENTES 3
## 8 ENTRE RÍOS 3
## 9 FORMOSA 3
## 10 JUJUY 3
## 11 LA PAMPA 3
## 12 LA RIOJA 3
## 13 MENDOZA 3
## 14 MISIONES 3
## 15 NEUQUÉN 3
## 16 RIO NEGRO 3
## 17 SALTA 3
## 18 SAN JUAN 3
## 19 SAN LUIS 3
## 20 SANTA CRUZ 3
## 21 SANTA FE 3
## 22 SANTIAGO DEL ESTERO 3
## 23 TIERRA DEL FUEGO 3
## 24 TUCUMÁN 3
Tabla 3 - Voto según provincia
Sen18_voto_provincia <- resul_sen18 %>%
group_by(Provincia) %>%
dplyr::count(Voto)
#Se renombra las variables
colnames(Sen18_voto_provincia) <- c("Provincia", "Voto", "Frecuencia")
Sen18_voto_provincia
## # A tibble: 42 x 3
## # Groups: Provincia [24]
## Provincia Voto Frecuencia
## <fct> <fct> <int>
## 1 BUENOS AIRES AFIRMATIVO 2
## 2 BUENOS AIRES NEGATIVO 1
## 3 C.A.B.A. AFIRMATIVO 1
## 4 C.A.B.A. NEGATIVO 2
## 5 CATAMARCA AFIRMATIVO 1
## 6 CATAMARCA NEGATIVO 2
## 7 CHACO AFIRMATIVO 2
## 8 CHACO NEGATIVO 1
## 9 CHUBUT AFIRMATIVO 3
## 10 CÓRDOBA AFIRMATIVO 3
## # ... with 32 more rows
3.12. Concatenación de las tablas en una base.
# Tabla 2 Sen18_provincia + Tabla 3 Sen18_voto_provincia
SenVotoProv18 <- merge(Sen18_provincia, Sen18_voto_provincia)
#Nueva variable con % del voto según el # de dip para cada prov
SenVotoProv18$ptc <- SenVotoProv18$Frecuencia/SenVotoProv18$No.Dip*100
#Reducimos los decimales de la variable %
SenVotoProv18$ptc <- round(SenVotoProv18$ptc,2)
#Se renombra las variables
colnames(SenVotoProv18) <- c("Provincia", "No.Dip", "Voto", "Frecuencia","Porcentaje")
#Se respalda base anterior
Sen18_aborto <- SenVotoProv18
3.13. Creamos grilla de Argentina para mapa geofacet.
argentina_grid2 <- data.frame(
col = c(1, 3, 5, 1, 2, 1, 3, 4, 2, 2, 4, 1, 3, 3, 4, 1, 2, 2, 1, 1, 2, 1, 1, 1),
row = c(1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 8, 9, 10),
code = c("AR-Y", "AR-P", "AR-N", "AR-A", "AR-T", "AR-K", "AR-H", "AR-W", "AR-G", "AR-X", "AR-E", "AR-F", "AR-S", "AR-B", "AR-C", "AR-J", "AR-D", "AR-L", "AR-M", "AR-Q", "AR-R", "AR-U", "AR-Z", "AR-V"),
name_es = c("Jujuy", "Formosa", "Misiones", "Salta", "Tucumán", "Catamarca",
"Chaco", "Corrientes", "S.del.Estero", "Córdoba", "Entre.Ríos", "La.Rioja", "Santa.Fe", "Buenos.Aires", "C.A.B.A.", "San.Juan", "San.Luis", "La.Pampa", "Mendoza", "Neuquén", "Río.Negro", "Chubut", "Santa.Cruz", "T.del.Fuego"), stringsAsFactors = FALSE)
3.14. Igualar el nombre de las provincias.
#Cambiar los nombres de Sen18_aborto$Provincia por argentina_grid2$name_es
unique(argentina_grid2$name_es)
## [1] "Jujuy" "Formosa" "Misiones" "Salta" "Tucumán"
## [6] "Catamarca" "Chaco" "Corrientes" "S.del.Estero" "Córdoba"
## [11] "Entre.Ríos" "La.Rioja" "Santa.Fe" "Buenos.Aires" "C.A.B.A."
## [16] "San.Juan" "San.Luis" "La.Pampa" "Mendoza" "Neuquén"
## [21] "Río.Negro" "Chubut" "Santa.Cruz" "T.del.Fuego"
unique(Sen18_aborto$Provincia)
## [1] BUENOS AIRES C.A.B.A. CATAMARCA
## [4] CHACO CHUBUT CÓRDOBA
## [7] CORRIENTES ENTRE RÍOS FORMOSA
## [10] JUJUY LA PAMPA LA RIOJA
## [13] MENDOZA MISIONES NEUQUÉN
## [16] RIO NEGRO SALTA SAN JUAN
## [19] SAN LUIS SANTA CRUZ SANTA FE
## [22] SANTIAGO DEL ESTERO TIERRA DEL FUEGO TUCUMÁN
## 24 Levels: BUENOS AIRES C.A.B.A. CATAMARCA CHACO CHUBUT CÓRDOBA ... TUCUMÁN
## 1.- Se cambia la clase de factor a character
class(Sen18_aborto$Provincia)
## [1] "factor"
Sen18_aborto$Provincia <- as.character(Sen18_aborto$Provincia)
## 2.- Se renombran las provincias:
Sen18_aborto <- Sen18_aborto %>%
mutate(Provincia = case_when(
Provincia == "TIERRA DEL FUEGO" ~ "T.del.Fuego",
Provincia == "FORMOSA" ~ "Formosa",
Provincia == "SANTIAGO DEL ESTERO" ~ "S.del.Estero",
Provincia == "CORRIENTES" ~ "Corrientes",
Provincia == "SAN JUAN" ~ "San.Juan",
Provincia == "SAN LUIS" ~ "San.Luis",
Provincia == "C.A.B.A." ~ "C.A.B.A.",
Provincia == "RIO NEGRO" ~ "Río.Negro",
Provincia == "JUJUY" ~ "Jujuy",
Provincia == "CHACO" ~ "Chaco",
Provincia == "MISIONES" ~ "Misiones",
Provincia == "LA RIOJA" ~ "La.Rioja",
Provincia == "CÓRDOBA" ~ "Córdoba",
Provincia == "MENDOZA" ~ "Mendoza",
Provincia == "LA PAMPA" ~ "La.Pampa",
Provincia == "CHUBUT" ~ "Chubut",
Provincia == "SALTA" ~ "Salta",
Provincia == "CATAMARCA" ~ "Catamarca",
Provincia == "TUCUMÁN" ~ "Tucumán",
Provincia == "SANTA FE" ~ "Santa.Fe",
Provincia == "ENTRE RÍOS" ~ "Entre.Ríos",
Provincia == "BUENOS AIRES" ~ "Buenos.Aires",
Provincia == "NEUQUÉN" ~ "Neuquén",
Provincia == "SANTA CRUZ" ~ "Santa.Cruz"))
## 3.- Se regresa a factor la clase de variable
Sen18_aborto$Provincia <- as.factor(Sen18_aborto$Provincia)
# Se guarda la base que se usa para hacer los plots
write.csv(Sen18_aborto, "Sen18_aborto.csv")
3.15. Plot Sen 2018
# Cargamos la base para el plot
Sen18_aborto <- read.csv("Sen18_aborto.csv")
# Se debe cargar "argentina_grid2"
# Establecemos orden de niveles para el plot
Sen18_aborto$Voto <- factor(as.character(Sen18_aborto$Voto), levels=c("ABSTENCION", "AFIRMATIVO", "AUSENTE", "NEGATIVO"))
3.16. Graficamos.
Sen18_aborto_plot <- ggplot(Sen18_aborto, aes("", Porcentaje, fill = Voto)) +
geom_col(alpha = 0.8) +
scale_fill_manual(values = c("#ebe834", "#58eb34", "#9c9c91", "#eb3a34"))+
coord_flip() +
facet_geo(~Provincia, grid = "argentina_grid2") +
theme_bw()+
labs(title = "Resultados de la votación del proyecto IVE en Senadores por tipo de voto 2018",
caption = "Fuente: Senadores Argentina",
x = "Porcentaje (%)",
y = NULL)+
theme(strip.text.x = element_text(size = 8))
Sen18_aborto_plot
3. Resultados de votaciones en Diputadxs 2020 según Provincias
3.17. Limpiamos el dataset original seleccionando las variables y filtrando por posiciones emitidas.
resul_dip20 <- votaciones_dip_2020 %>%
select(Diputado, Provincia, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
#Renombramos registros de CABA
resul_dip20$Provincia[resul_dip20$Provincia == 'CDAD. AUT. BS. AS.'] <- 'C.A.B.A.'
3.18. Cambiamos las clases de las variables.
# Se cambia la clase de variables "Provincia" y "Voto" de character a factor
class(resul_dip20$Provincia)
## [1] "character"
resul_dip20$Provincia <- as.factor(resul_dip20$Provincia)
class(resul_dip20$Voto)
## [1] "character"
resul_dip20$Voto <- as.factor(resul_dip20$Voto)
3.19. Construimos las tablas que necesitamos para graficar. Tabla 1 - votos
table(resul_dip20$Voto)
##
## ABSTENCION AFIRMATIVO AUSENTE NEGATIVO
## 6 131 2 117
#Lo anterior lo pasamos a un data:
Dip20_voto <- as.data.frame(table(resul_dip20$Voto))
#Se crea una nueva variable con los porcentajes de los votos
Dip20_voto$pct <- (Dip20_voto$Freq/257)*100
#Reducimos los decimales de la variable %
Dip20_voto$pct <- round(Dip20_voto$pct,2)
#Se renombran las variables
colnames(Dip20_voto) <- c("Voto", "Numero", "Porcentaje")
Dip20_voto
## Voto Numero Porcentaje
## 1 ABSTENCION 6 2.33
## 2 AFIRMATIVO 131 50.97
## 3 AUSENTE 2 0.78
## 4 NEGATIVO 117 45.53
Tabla 2 - Dip por provincia
table(resul_dip20$Provincia)
##
## BUENOS AIRES C.A.B.A. CATAMARCA CHACO
## 68 25 5 7
## CHUBUT CÓRDOBA CORRIENTES ENTRE RÍOS
## 5 18 7 9
## FORMOSA JUJUY LA PAMPA LA RIOJA
## 5 6 5 5
## MENDOZA MISIONES NEUQUÉN RIO NEGRO
## 10 7 5 5
## SALTA SAN JUAN SAN LUIS SANTA CRUZ
## 7 6 5 6
## SANTA FE SANTIAGO DEL ESTERO TIERRA DEL FUEGO TUCUMÁN
## 19 7 5 9
#Se crea un data del número de dip por provincia:
Dip20_provincia <- as.data.frame(table(resul_dip20$Provincia))
#Se renombran las variables
colnames(Dip20_provincia) <- c("Provincia", "No.Dip")
Dip20_provincia
## Provincia No.Dip
## 1 BUENOS AIRES 68
## 2 C.A.B.A. 25
## 3 CATAMARCA 5
## 4 CHACO 7
## 5 CHUBUT 5
## 6 CÓRDOBA 18
## 7 CORRIENTES 7
## 8 ENTRE RÍOS 9
## 9 FORMOSA 5
## 10 JUJUY 6
## 11 LA PAMPA 5
## 12 LA RIOJA 5
## 13 MENDOZA 10
## 14 MISIONES 7
## 15 NEUQUÉN 5
## 16 RIO NEGRO 5
## 17 SALTA 7
## 18 SAN JUAN 6
## 19 SAN LUIS 5
## 20 SANTA CRUZ 6
## 21 SANTA FE 19
## 22 SANTIAGO DEL ESTERO 7
## 23 TIERRA DEL FUEGO 5
## 24 TUCUMÁN 9
Tabla 3 - Voto según provincia
Dip20_voto_provincia <- resul_dip20 %>%
group_by(Provincia) %>%
dplyr::count(Voto)
#Se renombra las variables
colnames(Dip20_voto_provincia) <- c("Provincia", "Voto", "Frecuencia")
Dip20_voto_provincia
## # A tibble: 53 x 3
## # Groups: Provincia [24]
## Provincia Voto Frecuencia
## <fct> <fct> <int>
## 1 BUENOS AIRES ABSTENCION 1
## 2 BUENOS AIRES AFIRMATIVO 49
## 3 BUENOS AIRES AUSENTE 1
## 4 BUENOS AIRES NEGATIVO 17
## 5 C.A.B.A. ABSTENCION 2
## 6 C.A.B.A. AFIRMATIVO 15
## 7 C.A.B.A. NEGATIVO 8
## 8 CATAMARCA AFIRMATIVO 2
## 9 CATAMARCA NEGATIVO 3
## 10 CHACO AFIRMATIVO 1
## # ... with 43 more rows
3.20. Concatenación de las tablas en una base.
# Tabla 2 Dip20_provincia + Tabla 3 Dip20_voto_provincia
DipVotoProv20 <- merge(Dip20_provincia, Dip20_voto_provincia)
#Nueva variable con % del voto según el # de dip para cada prov
DipVotoProv20$ptc <- DipVotoProv20$Frecuencia/DipVotoProv20$No.Dip*100
#Reducimos los decimales de la variable %
DipVotoProv20$ptc <- round(DipVotoProv20$ptc,2)
#Se renombra las variables
colnames(DipVotoProv20) <- c("Provincia", "No.Dip", "Voto", "Frecuencia","Porcentaje")
#Se respalda base anterior
Dip20_aborto <- DipVotoProv20
3.21. Creamos grilla de Argentina para mapa geofacet.
argentina_grid2 <- data.frame(
col = c(1, 3, 5, 1, 2, 1, 3, 4, 2, 2, 4, 1, 3, 3, 4, 1, 2, 2, 1, 1, 2, 1, 1, 1),
row = c(1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 8, 9, 10),
code = c("AR-Y", "AR-P", "AR-N", "AR-A", "AR-T", "AR-K", "AR-H", "AR-W", "AR-G", "AR-X", "AR-E", "AR-F", "AR-S", "AR-B", "AR-C", "AR-J", "AR-D", "AR-L", "AR-M", "AR-Q", "AR-R", "AR-U", "AR-Z", "AR-V"),
name_es = c("Jujuy", "Formosa", "Misiones", "Salta", "Tucumán", "Catamarca",
"Chaco", "Corrientes", "S.del.Estero", "Córdoba", "Entre.Ríos", "La.Rioja", "Santa.Fe", "Buenos.Aires", "C.A.B.A.", "San.Juan", "San.Luis", "La.Pampa", "Mendoza", "Neuquén", "Río.Negro", "Chubut", "Santa.Cruz", "T.del.Fuego"), stringsAsFactors = FALSE)
3.22. Igualar el nombre de las provincias.
#Cambiar los nombres de Dip20_aborto$Provincia por argentina_grid2$name_es
unique(argentina_grid2$name_es)
## [1] "Jujuy" "Formosa" "Misiones" "Salta" "Tucumán"
## [6] "Catamarca" "Chaco" "Corrientes" "S.del.Estero" "Córdoba"
## [11] "Entre.Ríos" "La.Rioja" "Santa.Fe" "Buenos.Aires" "C.A.B.A."
## [16] "San.Juan" "San.Luis" "La.Pampa" "Mendoza" "Neuquén"
## [21] "Río.Negro" "Chubut" "Santa.Cruz" "T.del.Fuego"
unique(Dip20_aborto$Provincia)
## [1] BUENOS AIRES C.A.B.A. CATAMARCA
## [4] CHACO CHUBUT CÓRDOBA
## [7] CORRIENTES ENTRE RÍOS FORMOSA
## [10] JUJUY LA PAMPA LA RIOJA
## [13] MENDOZA MISIONES NEUQUÉN
## [16] RIO NEGRO SALTA SAN JUAN
## [19] SAN LUIS SANTA CRUZ SANTA FE
## [22] SANTIAGO DEL ESTERO TIERRA DEL FUEGO TUCUMÁN
## 24 Levels: BUENOS AIRES C.A.B.A. CATAMARCA CHACO CHUBUT CÓRDOBA ... TUCUMÁN
## 1.- Se cambia la clase de factor a character
class(Dip20_aborto$Provincia)
## [1] "factor"
Dip20_aborto$Provincia <- as.character(Dip20_aborto$Provincia)
## 2.- Se renombran las provincias:
Dip20_aborto <- Dip20_aborto %>%
mutate(Provincia = case_when(
Provincia == "TIERRA DEL FUEGO" ~ "T.del.Fuego",
Provincia == "FORMOSA" ~ "Formosa",
Provincia == "SANTIAGO DEL ESTERO" ~ "S.del.Estero",
Provincia == "CORRIENTES" ~ "Corrientes",
Provincia == "SAN JUAN" ~ "San.Juan",
Provincia == "SAN LUIS" ~ "San.Luis",
Provincia == "C.A.B.A." ~ "C.A.B.A.",
Provincia == "RIO NEGRO" ~ "Río.Negro",
Provincia == "JUJUY" ~ "Jujuy",
Provincia == "CHACO" ~ "Chaco",
Provincia == "MISIONES" ~ "Misiones",
Provincia == "LA RIOJA" ~ "La.Rioja",
Provincia == "CÓRDOBA" ~ "Córdoba",
Provincia == "MENDOZA" ~ "Mendoza",
Provincia == "LA PAMPA" ~ "La.Pampa",
Provincia == "CHUBUT" ~ "Chubut",
Provincia == "SALTA" ~ "Salta",
Provincia == "CATAMARCA" ~ "Catamarca",
Provincia == "TUCUMÁN" ~ "Tucumán",
Provincia == "SANTA FE" ~ "Santa.Fe",
Provincia == "ENTRE RÍOS" ~ "Entre.Ríos",
Provincia == "BUENOS AIRES" ~ "Buenos.Aires",
Provincia == "NEUQUÉN" ~ "Neuquén",
Provincia == "SANTA CRUZ" ~ "Santa.Cruz"))
## 3.- Se regresa a factor la clase de variable
Dip20_aborto$Provincia <- as.factor(Dip20_aborto$Provincia)
# Se guarda la base que se usa para hacer los plots
write.csv(Dip20_aborto, "Dip20_aborto.csv")
3.23. Plot Dip 2020
# Cargamos la base para el plot
Dip20_aborto <- read.csv("Dip20_aborto.csv")
# Se debe cargar "argentina_grid2"
# Establecemos orden de niveles para el plot
Dip20_aborto$Voto <- factor(as.character(Dip20_aborto$Voto), levels=c("ABSTENCION", "AFIRMATIVO", "AUSENTE", "NEGATIVO"))
3.24. Graficamos.
Dip20_aborto_plot <- ggplot(Dip20_aborto, aes("", Porcentaje, fill = Voto)) +
geom_col(alpha = 0.8) +
scale_fill_manual(values = c("#ebe834", "#58eb34", "#9c9c91", "#eb3a34"))+
coord_flip() +
facet_geo(~Provincia, grid = "argentina_grid2") +
theme_bw()+
labs(title = "Resultados de la votación del proyecto IVE en Diputados por tipo de voto 2020",
caption = "Fuente: Diputados Argentina",
x = "Porcentaje (%)",
y = NULL)+
theme(strip.text.x = element_text(size = 8))
Dip20_aborto_plot
3. Resultados de votaciones en Senadorxs 2020 según Provincias
3.25. Limpiamos el dataset original seleccionando las variables y filtrando por posiciones emitidas.
resul_sen20 <- votaciones_sen_2020 %>%
select(Diputado, Provincia, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO')
#Renombramos registros de CABA
resul_sen20$Provincia[resul_sen20$Provincia == 'CDAD. AUT. BS. AS.'] <- 'C.A.B.A.'
table(resul_sen20$Provincia)
##
## BUENOS AIRES C.A.B.A. CATAMARCA
## 15 1 2 3
## CHACO CHUBUT CÓRDOBA CORRIENTES
## 1 3 3 3
## ENTRE RÍOS FORMOSA JUJUY LA PAMPA
## 1 3 3 3
## LA RIOJA MENDOZA MISIONES NEUQUÉN
## 3 3 3 2
## RIO NEGRO SALTA SAN JUAN SAN LUIS
## 2 2 3 3
## SANTA CRUZ SANTA FE SANTIAGO DEL ESTERO TIERRA DEL FUEGO
## 3 2 1 1
## TUCUMÁN
## 3
#Rellenamos los valores que faltan
resul_sen20$Provincia[53] <- "BUENOS AIRES"
resul_sen20$Provincia[3] <- "C.A.B.A."
resul_sen20$Provincia[7] <- "ENTRE RÍOS"
resul_sen20$Provincia[10] <- "NEUQUÉN"
resul_sen20$Provincia[12] <- "TIERRA DEL FUEGO"
resul_sen20$Provincia[14] <- "SALTA"
resul_sen20$Provincia[24] <- "BUENOS AIRES"
resul_sen20$Provincia[30] <- "RIO NEGRO"
resul_sen20$Provincia[33] <- "SANTA FE"
resul_sen20$Provincia[35] <- "ENTRE RÍOS"
resul_sen20$Provincia[37] <- "C.A.B.A."
resul_sen20$Provincia[45] <- "SANTIAGO DEL ESTERO"
resul_sen20$Provincia[49] <- "CHACO"
resul_sen20$Provincia[58] <- "TIERRA DEL FUEGO"
resul_sen20$Provincia[61] <- "SANTIAGO DEL ESTERO"
resul_sen20$Provincia[66] <- "CHACO"
table(resul_sen20$Provincia)
##
## BUENOS AIRES C.A.B.A. CATAMARCA CHACO
## 3 3 3 3
## CHUBUT CÓRDOBA CORRIENTES ENTRE RÍOS
## 3 3 3 3
## FORMOSA JUJUY LA PAMPA LA RIOJA
## 3 3 3 3
## MENDOZA MISIONES NEUQUÉN RIO NEGRO
## 3 3 3 3
## SALTA SAN JUAN SAN LUIS SANTA CRUZ
## 3 3 3 3
## SANTA FE SANTIAGO DEL ESTERO TIERRA DEL FUEGO TUCUMÁN
## 3 3 3 3
3.26. Cambiamos las clases de las variables.
# Se cambia la clase de variables "Provincia" y "Voto" de character a factor
class(resul_sen20$Provincia)
## [1] "character"
resul_sen20$Provincia <- as.factor(resul_sen20$Provincia)
class(resul_sen18$Voto)
## [1] "factor"
resul_sen20$Voto <- as.factor(resul_sen20$Voto)
3.27. Construimos las tablas que necesitamos para graficar. Tabla 1 - votos
table(resul_sen20$Voto)
##
## ABSTENCION AFIRMATIVO AUSENTE NEGATIVO
## 1 38 4 29
#Lo anterior lo pasamos a un data:
Sen20_voto <- as.data.frame(table(resul_sen20$Voto))
#Se crea una nueva variable con los porcentajes de los votos
Sen20_voto$pct <- (Sen20_voto$Freq/72)*100
#Reducimos los decimales de la variable %
Sen20_voto$pct <- round(Sen20_voto$pct,2)
#Se renombran las variables
colnames(Sen20_voto) <- c("Voto", "Numero", "Porcentaje")
Sen20_voto
## Voto Numero Porcentaje
## 1 ABSTENCION 1 1.39
## 2 AFIRMATIVO 38 52.78
## 3 AUSENTE 4 5.56
## 4 NEGATIVO 29 40.28
Tabla 2 - Sen por provincia
table(resul_sen20$Provincia)
##
## BUENOS AIRES C.A.B.A. CATAMARCA CHACO
## 3 3 3 3
## CHUBUT CÓRDOBA CORRIENTES ENTRE RÍOS
## 3 3 3 3
## FORMOSA JUJUY LA PAMPA LA RIOJA
## 3 3 3 3
## MENDOZA MISIONES NEUQUÉN RIO NEGRO
## 3 3 3 3
## SALTA SAN JUAN SAN LUIS SANTA CRUZ
## 3 3 3 3
## SANTA FE SANTIAGO DEL ESTERO TIERRA DEL FUEGO TUCUMÁN
## 3 3 3 3
#Se crea un data del número de dip por provincia:
Sen20_provincia <- as.data.frame(table(resul_sen20$Provincia))
#Se renombran las variables
colnames(Sen20_provincia) <- c("Provincia", "No.Dip")
Sen20_provincia
## Provincia No.Dip
## 1 BUENOS AIRES 3
## 2 C.A.B.A. 3
## 3 CATAMARCA 3
## 4 CHACO 3
## 5 CHUBUT 3
## 6 CÓRDOBA 3
## 7 CORRIENTES 3
## 8 ENTRE RÍOS 3
## 9 FORMOSA 3
## 10 JUJUY 3
## 11 LA PAMPA 3
## 12 LA RIOJA 3
## 13 MENDOZA 3
## 14 MISIONES 3
## 15 NEUQUÉN 3
## 16 RIO NEGRO 3
## 17 SALTA 3
## 18 SAN JUAN 3
## 19 SAN LUIS 3
## 20 SANTA CRUZ 3
## 21 SANTA FE 3
## 22 SANTIAGO DEL ESTERO 3
## 23 TIERRA DEL FUEGO 3
## 24 TUCUMÁN 3
Tabla 3 - Voto según provincia
Sen20_voto_provincia <- resul_sen20 %>%
group_by(Provincia) %>%
dplyr::count(Voto)
#Se renombra las variables
colnames(Sen20_voto_provincia) <- c("Provincia", "Voto", "Frecuencia")
Sen20_voto_provincia
## # A tibble: 43 x 3
## # Groups: Provincia [24]
## Provincia Voto Frecuencia
## <fct> <fct> <int>
## 1 BUENOS AIRES AFIRMATIVO 2
## 2 BUENOS AIRES NEGATIVO 1
## 3 C.A.B.A. AFIRMATIVO 3
## 4 CATAMARCA AFIRMATIVO 1
## 5 CATAMARCA NEGATIVO 2
## 6 CHACO AFIRMATIVO 1
## 7 CHACO NEGATIVO 2
## 8 CHUBUT AFIRMATIVO 3
## 9 CÓRDOBA AFIRMATIVO 3
## 10 CORRIENTES AFIRMATIVO 1
## # ... with 33 more rows
3.28. Concatenación de las tablas en una base.
# Tabla 2 Sen20_provincia + Tabla 3 Sen20_voto_provincia
SenVotoProv20 <- merge(Sen20_provincia, Sen20_voto_provincia)
#Nueva variable con % del voto según el # de dip para cada prov
SenVotoProv20$ptc <- SenVotoProv20$Frecuencia/SenVotoProv20$No.Dip*100
#Reducimos los decimales de la variable %
SenVotoProv20$ptc <- round(SenVotoProv20$ptc,2)
#Se renombra las variables
colnames(SenVotoProv20) <- c("Provincia", "No.Dip", "Voto", "Frecuencia","Porcentaje")
#Se respalda base anterior
Sen20_aborto <- SenVotoProv20
3.29. Creamos grilla de Argentina para mapa geofacet.
argentina_grid2 <- data.frame(
col = c(1, 3, 5, 1, 2, 1, 3, 4, 2, 2, 4, 1, 3, 3, 4, 1, 2, 2, 1, 1, 2, 1, 1, 1),
row = c(1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 8, 9, 10),
code = c("AR-Y", "AR-P", "AR-N", "AR-A", "AR-T", "AR-K", "AR-H", "AR-W", "AR-G", "AR-X", "AR-E", "AR-F", "AR-S", "AR-B", "AR-C", "AR-J", "AR-D", "AR-L", "AR-M", "AR-Q", "AR-R", "AR-U", "AR-Z", "AR-V"),
name_es = c("Jujuy", "Formosa", "Misiones", "Salta", "Tucumán", "Catamarca",
"Chaco", "Corrientes", "S.del.Estero", "Córdoba", "Entre.Ríos", "La.Rioja", "Santa.Fe", "Buenos.Aires", "C.A.B.A.", "San.Juan", "San.Luis", "La.Pampa", "Mendoza", "Neuquén", "Río.Negro", "Chubut", "Santa.Cruz", "T.del.Fuego"), stringsAsFactors = FALSE)
3.30. Igualar el nombre de las provincias.
#Cambiar los nombres de Sen20_aborto$Provincia por argentina_grid2$name_es
unique(argentina_grid2$name_es)
## [1] "Jujuy" "Formosa" "Misiones" "Salta" "Tucumán"
## [6] "Catamarca" "Chaco" "Corrientes" "S.del.Estero" "Córdoba"
## [11] "Entre.Ríos" "La.Rioja" "Santa.Fe" "Buenos.Aires" "C.A.B.A."
## [16] "San.Juan" "San.Luis" "La.Pampa" "Mendoza" "Neuquén"
## [21] "Río.Negro" "Chubut" "Santa.Cruz" "T.del.Fuego"
unique(Sen20_aborto$Provincia)
## [1] BUENOS AIRES C.A.B.A. CATAMARCA
## [4] CHACO CHUBUT CÓRDOBA
## [7] CORRIENTES ENTRE RÍOS FORMOSA
## [10] JUJUY LA PAMPA LA RIOJA
## [13] MENDOZA MISIONES NEUQUÉN
## [16] RIO NEGRO SALTA SAN JUAN
## [19] SAN LUIS SANTA CRUZ SANTA FE
## [22] SANTIAGO DEL ESTERO TIERRA DEL FUEGO TUCUMÁN
## 24 Levels: BUENOS AIRES C.A.B.A. CATAMARCA CHACO CHUBUT CÓRDOBA ... TUCUMÁN
## 1.- Se cambia la clase de factor a character
class(Sen20_aborto$Provincia)
## [1] "factor"
Sen20_aborto$Provincia <- as.character(Sen20_aborto$Provincia)
## 2.- Se renombran las provincias:
Sen20_aborto <- Sen20_aborto %>%
mutate(Provincia = case_when(
Provincia == "TIERRA DEL FUEGO" ~ "T.del.Fuego",
Provincia == "FORMOSA" ~ "Formosa",
Provincia == "SANTIAGO DEL ESTERO" ~ "S.del.Estero",
Provincia == "CORRIENTES" ~ "Corrientes",
Provincia == "SAN JUAN" ~ "San.Juan",
Provincia == "SAN LUIS" ~ "San.Luis",
Provincia == "C.A.B.A." ~ "C.A.B.A.",
Provincia == "RIO NEGRO" ~ "Río.Negro",
Provincia == "JUJUY" ~ "Jujuy",
Provincia == "CHACO" ~ "Chaco",
Provincia == "MISIONES" ~ "Misiones",
Provincia == "LA RIOJA" ~ "La.Rioja",
Provincia == "CÓRDOBA" ~ "Córdoba",
Provincia == "MENDOZA" ~ "Mendoza",
Provincia == "LA PAMPA" ~ "La.Pampa",
Provincia == "CHUBUT" ~ "Chubut",
Provincia == "SALTA" ~ "Salta",
Provincia == "CATAMARCA" ~ "Catamarca",
Provincia == "TUCUMÁN" ~ "Tucumán",
Provincia == "SANTA FE" ~ "Santa.Fe",
Provincia == "ENTRE RÍOS" ~ "Entre.Ríos",
Provincia == "BUENOS AIRES" ~ "Buenos.Aires",
Provincia == "NEUQUÉN" ~ "Neuquén",
Provincia == "SANTA CRUZ" ~ "Santa.Cruz"))
## 3.- Se regresa a factor la clase de variable
Sen20_aborto$Provincia <- as.factor(Sen20_aborto$Provincia)
# Se guarda la base que se usa para hacer los plots
write.csv(Sen20_aborto, "Sen20_aborto.csv")
3.31. Plot Sen 2020
# Cargamos la base para el plot
Sen20_aborto <- read.csv("Sen20_aborto.csv")
# Se debe cargar "argentina_grid2"
# Establecemos orden de niveles para el plot
Sen20_aborto$Voto <- factor(as.character(Sen20_aborto$Voto), levels=c("ABSTENCION", "AFIRMATIVO", "AUSENTE", "NEGATIVO"))
3.32. Graficamos.
Sen20_aborto_plot <- ggplot(Sen20_aborto, aes("", Porcentaje, fill = Voto)) +
geom_col(alpha = 0.8) +
scale_fill_manual(values = c("#ebe834", "#58eb34", "#9c9c91", "#eb3a34"))+
coord_flip() +
facet_geo(~Provincia, grid = "argentina_grid2") +
theme_bw()+
labs(title = "Resultados de la votación del proyecto IVE en Senadores por tipo de voto 2020",
caption = "Fuente: Senadores Argentina",
x = "Porcentaje (%)",
y = NULL)+
theme(strip.text.x = element_text(size = 8))
Sen20_aborto_plot
4. Resultados de votaciones en Diputadxs 2018 según Género
4.1. Seleccionamos las variables del dataset original, ordenamos alfabéticamente y creamos una columna nueva para asignar nro de id a cada legislador.
resultados_dip_2018_sg <- votaciones_dip_2018 %>%
select(Diputado, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO') %>%
rename(Diputade = Diputado) %>%
arrange(Diputade) %>%
mutate(id = row_number())
4.2. Importamos el dataset que contiene la variable Género de Chequeado.com
resultados_dip_2018_cg <- read_excel("dip_genero_2018_chequeado.xlsx")
resultados_dip_2018_cg = resultados_dip_2018_cg[-257,] # Sacamos al Presidente de la Cámara
resultados_dip_2018_cg <- resultados_dip_2018_cg %>%
dplyr::rename(Diputade = Diputado) %>%
select(Diputade, Género) %>%
arrange(Diputade) %>%
mutate(id = row_number())
4.3.Chequeamos las primeras y últimas observaciones de ambos datasets para corroborar que coincidan
head(resultados_dip_2018_sg)
## Diputade Voto id
## 1 Abdala De Matarazzo, Norma Amanda NEGATIVO 1
## 2 Acerenza., Samantha AFIRMATIVO 2
## 3 Aicega, Juan NEGATIVO 3
## 4 Allende, Walberto Enrique NEGATIVO 4
## 5 Alonso, Laura Valeria AFIRMATIVO 5
## 6 Alume Sbodio, Karim Augusto NEGATIVO 6
head(resultados_dip_2018_cg)
## # A tibble: 6 x 3
## Diputade Género id
## <chr> <chr> <int>
## 1 ABDALA DE MATARAZZO, Norma Amanda F 1
## 2 ACERENZA, Samanta María Celeste F 2
## 3 AICEGA, Juan M 3
## 4 ALLENDE, Walberto Enrique M 4
## 5 ALONSO, Laura Valeria F 5
## 6 ALUME SBODIO, Karim Augusto M 6
tail(resultados_dip_2018_sg)
## Diputade Voto id
## 251 Yasky, Hugo AFIRMATIVO 251
## 252 Yedlin, Pablo Raúl AFIRMATIVO 252
## 253 Zamarbide, Federico Raùl NEGATIVO 253
## 254 Zamora, Claudia NEGATIVO 254
## 255 Ziliotto., Sergio Raúl AFIRMATIVO 255
## 256 Zottos, Miguel Andrés Costas NEGATIVO 256
tail(resultados_dip_2018_cg)
## # A tibble: 6 x 3
## Diputade Género id
## <chr> <chr> <int>
## 1 YASKY, Hugo M 251
## 2 YEDLIN, Pablo Raúl M 252
## 3 ZAMARBIDE, Federico Raúl M 253
## 4 ZAMORA, Claudia F 254
## 5 ZILIOTTO, Sergio Raúl M 255
## 6 ZOTTOS, Miguel Andrés Costas M 256
4.4. Unimos los dos datasets en base al id.
votaciones_dip_2018_g <- left_join(resultados_dip_2018_sg, resultados_dip_2018_cg, by = "id") #Unimos los dos resultados_dip_2018_cg
anyNA(votaciones_dip_2018_g) #Corroboramos que no haya valores faltantes
## [1] FALSE
votaciones_dip_2018_g <- votaciones_dip_2018_g %>%
select(Diputade.x, Voto, Género) %>% #Seleccionamos variables
rename(Diputade = Diputade.x) %>% # Renombramos
mutate(Género = case_when(Género == "M" ~ "MASCULINO",
Género == "F" ~ "FEMENINO")) #Modificamos la columna Género para que figure como "Femenino" y "Masculino" en lugar de "F" y "M"
#Chequeamos cómo quedó el dataset
view(votaciones_dip_2018_g)
4.5. Creamos una tabla que refleje la composición por género de la Cámara de Diputadxs en 2018
dip_2018_genero <- votaciones_dip_2018_g %>%
filter(Género =="FEMENINO"| Género=="MASCULINO") %>%
dplyr::count(Género) %>%
rename(Cantidad = n, Genero = Género) %>%
arrange(desc(Cantidad)) %>%
mutate(Porcentaje = paste0(round(Cantidad/sum(Cantidad) * 100, 2), "%")) %>%
transform(Genero = reorder(Genero, -Cantidad))
dip_2018_genero
## Genero Cantidad Porcentaje
## 1 MASCULINO 156 60.94%
## 2 FEMENINO 100 39.06%
4.6. Creamos el gráfico de barras con los valores de la composición por género de la Cámara de Diputadxs en 2018.
dip_2018_genero_plot <- ggplot(dip_2018_genero,
aes(x = Genero, y = Cantidad, p = Porcentaje, fill = Genero, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Genero))) +
geom_bar(stat = 'identity') +
scale_y_continuous(breaks = seq(0, 180, by = 25)) +
scale_fill_manual(values = c("#32a89b", "#9D2ADB")) +
labs(title = "Composición Cámara de Diputados por Género 2018",
caption = "Fuente: Cámara de Diputados de la Nación",
x = "Género",
y = "Cantidad") +
theme_minimal() +
geom_text(aes(x = Genero, y = Cantidad, label= Cantidad), position=position_dodge(width=0.9), vjust=-1.50)
4.7. Armamos un plotly con el gráfico anterior.
dip_2018_genero_plotly <- ggplotly(dip_2018_genero_plot, tooltip = "text") %>% layout(title = list(text = paste0('Composición Cámara de Diputados por Género','<br>', '<sup>', 'Año 2018', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.20,
y = -0.12,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
dip_2018_genero_plotly
4.9.Creamos una nueva tabla que agrupe Género por tipo de Voto.
resultados_dip_2018_genero_voto <- votaciones_dip_2018_g %>%
dplyr::count(Género, Voto) %>%
rename(Cantidad = n) %>%
group_by(Género) %>%
mutate(Porcentaje = (round(Cantidad/sum(Cantidad) * 100, 2))) %>%
transform(Voto = reorder(Voto, -Cantidad))
resultados_dip_2018_genero_voto
## Género Voto Cantidad Porcentaje
## 1 FEMENINO ABSTENCION 1 1.00
## 2 FEMENINO AFIRMATIVO 57 57.00
## 3 FEMENINO NEGATIVO 42 42.00
## 4 MASCULINO AFIRMATIVO 72 46.15
## 5 MASCULINO AUSENTE 1 0.64
## 6 MASCULINO NEGATIVO 83 53.21
#Establecemos un orden de niveles para que se reflejen en el gráfico
resultados_dip_2018_genero_voto$Voto <- factor(as.character(resultados_dip_2018_genero_voto$Voto), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
4.10. Creamos un gráfico con la proporción de Voto por Género.
resultados_dip_2018_genero_voto_plot <- ggplot(resultados_dip_2018_genero_voto,
aes(x = Género, y = Cantidad, p = Porcentaje, fill = Voto, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Voto))) +
geom_bar(position ="fill", stat = 'identity') +
scale_y_continuous(labels = scales::percent) +
scale_fill_manual(values = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) +
labs(title = "Resultados de votación del proyecto IVE en Diputados por Género",
caption = "Fuente: Cámara de Diputados de la Nación",
x = "Género",
y = "Cantidad") +
theme_minimal()
4.11. Creamos el plotly.
resultados_dip_2018_genero_voto_plotly <- ggplotly(resultados_dip_2018_genero_voto_plot, tooltip = "text") %>% layout(title = list(text = paste0('Resultados de votación del proyecto IVE en Diputados por Género','<br>', '<sup>', 'Año 2018', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.20,
y = -0.12,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
resultados_dip_2018_genero_voto_plotly
4. Resultados de votaciones en Senadorxs 2018 según Género
4.12. Seleccionamos las variables del dataset original, ordenamos alfabéticamente y creamos una columna nueva para asignar nro de id a cada legislador.
resultados_sen_2018_sg <- votaciones_sen_2018 %>%
select(Diputado, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO') %>%
rename(Diputade = Diputado) %>%
arrange(Diputade) %>%
mutate(id = row_number())
4.13. Importamos el dataset que contiene la variable Género de Chequeado.com
resultados_sen_2018_cg <- read_excel("sen_genero_2018_chequeado.xlsx")
resultados_sen_2018_cg <- resultados_sen_2018_cg %>%
dplyr::rename(Género = GÉNERO) %>%
select(APELLIDO, NOMBRE, Género) %>%
arrange(APELLIDO) %>%
mutate(id = row_number())
4.14.Chequeamos las primeras y últimas observaciones de ambos datasets para corroborar que coincidan
head(resultados_sen_2018_sg)
## Diputade Voto id
## 1 Aguilar., Eduardo Alberto AFIRMATIVO 1
## 2 Almirón., Ana Claudia AFIRMATIVO 2
## 3 Alperovich., José NEGATIVO 3
## 4 Basualdo., Roberto Gustavo NEGATIVO 4
## 5 Blas., Inés Imelda NEGATIVO 5
## 6 Boyadjian., Miriam Ruth NEGATIVO 6
head(resultados_sen_2018_cg)
## # A tibble: 6 x 4
## APELLIDO NOMBRE Género id
## <chr> <chr> <chr> <int>
## 1 AGUILAR EDUARDO ALBERTO M 1
## 2 ALMIRÓN ANA CLAUDIA F 2
## 3 ALPEROVICH JOSÉ JORGE M 3
## 4 BASUALDO ROBERTO GUSTAVO M 4
## 5 BLAS INÉS IMELDA F 5
## 6 BOYADJIAN MIRIAM RUTH F 6
tail(resultados_sen_2018_sg)
## Diputade Voto id
## 67 Solari Quintana, Magdalena NEGATIVO 67
## 68 Tapia, María Bélen NEGATIVO 68
## 69 Uñac, José Rubén. NEGATIVO 69
## 70 Urtubey., Rodolfo Julio\t NEGATIVO 70
## 71 Varela., Marta NEGATIVO 71
## 72 Verasay., Pamela Fernanda AFIRMATIVO 72
tail(resultados_sen_2018_cg)
## # A tibble: 6 x 4
## APELLIDO NOMBRE Género id
## <chr> <chr> <chr> <int>
## 1 SOLARI QUINTANA MAGDALENA F 67
## 2 TAPIA MARÍA BELÉN F 68
## 3 UÑAC JOSÉ RUBÉN M 69
## 4 URTUBEY RODOLFO JULIO M 70
## 5 VARELA MARTA F 71
## 6 VERASAY PAMELA FERNANDA F 72
4.15. Unimos los dos datasets en base al id.
votaciones_sen_2018_g <- left_join(resultados_sen_2018_sg, resultados_sen_2018_cg, by = "id") #Unimos los dos resultados_dip_2018_cg
anyNA(votaciones_sen_2018_g) #Corroboramos que no haya valores faltantes
## [1] FALSE
votaciones_sen_2018_g <- votaciones_sen_2018_g %>%
select(Diputade, Voto, Género) %>% #Seleccionamos variables
mutate(Género = case_when(Género == "M" ~ "MASCULINO",
Género == "F" ~ "FEMENINO")) #Modificamos la columna Género para que figure como "Femenino" y "Masculino" en lugar de "F" y "M"
#Chequeamos cómo quedó el dataset
view(votaciones_sen_2018_g)
4.16. Creamos una tabla que refleje la composición por género de la Cámara de Diputadxs en 2018
sen_2018_genero <- votaciones_sen_2018_g %>%
filter(Género =="FEMENINO"| Género=="MASCULINO") %>%
dplyr::count(Género) %>%
rename(Cantidad = n, Genero = Género) %>%
arrange(desc(Cantidad)) %>%
mutate(Porcentaje = paste0(round(Cantidad/sum(Cantidad) * 100, 2), "%")) %>%
transform(Genero = reorder(Genero, -Cantidad))
sen_2018_genero
## Genero Cantidad Porcentaje
## 1 MASCULINO 42 58.33%
## 2 FEMENINO 30 41.67%
4.17. Creamos el gráfico de barras con los valores de la composición por género de la Cámara de Diputadxs en 2018.
sen_2018_genero_plot <- ggplot(sen_2018_genero,
aes(x = Genero, y = Cantidad, p = Porcentaje, fill = Genero, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Genero))) +
geom_bar(stat = 'identity') +
scale_y_continuous(breaks = seq(0, 180, by = 25)) +
scale_fill_manual(values = c("#32a89b", "#9D2ADB")) +
labs(title = "Composición Cámara de Senadores por Género 2018",
caption = "Fuente: Cámara de Senadores de la Nación",
x = "Género",
y = "Cantidad") +
theme_minimal() +
geom_text(aes(x = Genero, y = Cantidad, label= Cantidad), position=position_dodge(width=0.9), vjust=-1.50)
4.18. Armamos un plotly con el gráfico anterior.
sen_2018_genero_plotly <- ggplotly(sen_2018_genero_plot, tooltip = "text") %>% layout(title = list(text = paste0('Composición Cámara de Senadores por Género','<br>', '<sup>', 'Año 2018', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.20,
y = -0.12,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
sen_2018_genero_plotly
4.19.Creamos una nueva tabla que agrupe Género por tipo de Voto.
resultados_sen_2018_genero_voto <- votaciones_sen_2018_g %>%
dplyr::count(Género, Voto) %>%
rename(Cantidad = n) %>%
group_by(Género) %>%
mutate(Porcentaje = (round(Cantidad/sum(Cantidad) * 100, 2))) %>%
transform(Voto = reorder(Voto, -Cantidad))
resultados_sen_2018_genero_voto
## Género Voto Cantidad Porcentaje
## 1 FEMENINO ABSTENCION 1 3.33
## 2 FEMENINO AFIRMATIVO 14 46.67
## 3 FEMENINO AUSENTE 1 3.33
## 4 FEMENINO NEGATIVO 14 46.67
## 5 MASCULINO ABSTENCION 1 2.38
## 6 MASCULINO AFIRMATIVO 17 40.48
## 7 MASCULINO NEGATIVO 24 57.14
#Establecemos un orden de niveles para que se reflejen en el gráfico
resultados_sen_2018_genero_voto$Voto <- factor(as.character(resultados_sen_2018_genero_voto$Voto), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
4.20. Creamos un gráfico con la proporción de Voto por Género.
resultados_sen_2018_genero_voto_plot <- ggplot(resultados_sen_2018_genero_voto,
aes(x = Género, y = Cantidad, p = Porcentaje, fill = Voto, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Voto))) +
geom_bar(position ="fill", stat = 'identity') +
scale_y_continuous(labels = scales::percent) +
scale_fill_manual(values = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) +
labs(title = "Resultados de votación del proyecto IVE en Senadores por Género",
subtitle = "Año 2018",
caption = "Fuente: Cámara de Senadores de la Nación",
x = "Género",
y = "Cantidad") +
theme_minimal()
4.21. Creamos el plotly.
resultados_sen_2018_genero_voto_plotly <- ggplotly(resultados_sen_2018_genero_voto_plot, tooltip = "text") %>% layout(title = list(text = paste0('Resultados de votación del proyecto IVE en Senadores por Género','<br>', '<sup>', 'Año 2018', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.20,
y = -0.12,
text = "Fuente: Cámara de Senadores de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
resultados_sen_2018_genero_voto_plotly
4. Resultados de votaciones en Diputadxs 2020 según Género
4.22. Seleccionamos las variables del dataset original, ordenamos alfabéticamente y creamos una columna nueva para asignar nro de id a cada legislador.
resultados_dip_2020_sg <- votaciones_dip_2020 %>%
select(Diputado, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO') %>%
rename(Diputade = Diputado) %>%
arrange(Diputade) %>%
mutate(id = row_number())
4.23. Importamos el dataset que contiene la variable Género de Economía Femini(s)ta.
resultados_dip_2020_cg <- read_excel("dip_genero_2020_ecofeminista.xlsx")
resultados_dip_2020_cg = resultados_dip_2020_cg[-153,] # Sacamos al Presidente de la Cámara
resultados_dip_2020_cg <- resultados_dip_2020_cg %>%
dplyr::rename(Diputade = Nombre, Género = Genero) %>%
select(Diputade, Género) %>%
arrange(Diputade) %>%
mutate(id = row_number())
4.24.Chequeamos las primeras y últimas observaciones de ambos datasets para corroborar que coincidan
head(resultados_dip_2020_sg)
## Diputade Voto id
## 1 Abdala De Matarazzo, Norma Amanda NEGATIVO 1
## 2 Aguirre., Hilda Clelia AFIRMATIVO 2
## 3 Aicega, Juan NEGATIVO 3
## 4 Alderete, Juan Carlos AFIRMATIVO 4
## 5 Allende, Walberto Enrique NEGATIVO 5
## 6 Alume Sbodio, Karim Augusto NEGATIVO 6
head(resultados_dip_2020_cg)
## # A tibble: 6 x 3
## Diputade Género id
## <chr> <chr> <int>
## 1 Abdala De Matarazzo, Norma Amanda Mujer 1
## 2 Aguirre, Hilda Clelia Mujer 2
## 3 Aicega, Juan Varón 3
## 4 Alderete, Juan Carlos Varón 4
## 5 Allende, Walberto Enrique Varón 5
## 6 Alume Sbodio, Karim Augusto Varón 6
tail(resultados_dip_2020_sg)
## Diputade Voto id
## 251 Yasky, Hugo AFIRMATIVO 251
## 252 Yedlin, Pablo Raúl AFIRMATIVO 252
## 253 Yutrovic, Ines Carolina AFIRMATIVO 253
## 254 Zamarbide, Federico Raùl NEGATIVO 254
## 255 Zottos, Miguel Andrés Costas NEGATIVO 255
## 256 Zuvic, Mariana ABSTENCION 256
tail(resultados_dip_2020_cg)
## # A tibble: 6 x 3
## Diputade Género id
## <chr> <chr> <int>
## 1 Yasky, Hugo Varón 251
## 2 Yedlin, Pablo Raúl Varón 252
## 3 Yutrovic, Carolina Mujer 253
## 4 Zamarbide, Federico Raúl Varón 254
## 5 Zottos, Andrés Varón 255
## 6 Zuvic, Mariana Mujer 256
4.25. Unimos los dos datasets en base al id.
votaciones_dip_2020_g <- left_join(resultados_dip_2020_sg, resultados_dip_2020_cg, by = "id") #Unimos los dos resultados_dip_2018_cg
anyNA(votaciones_dip_2020_g) #Corroboramos que no haya valores faltantes
## [1] FALSE
votaciones_dip_2020_g <- votaciones_dip_2020_g %>%
select(Diputade.x, Voto, Género) %>% #Seleccionamos variables
rename(Diputade = Diputade.x) %>% # Renombramos
mutate(Género = case_when(Género == "Varón" ~ "MASCULINO",
Género == "Mujer" ~ "FEMENINO")) #Modificamos la columna Género para que figure como "Femenino" y "Masculino" en lugar de "Mujer" y "Varón"
#Chequeamos cómo quedó el dataset
view(votaciones_dip_2020_g)
4.26. Creamos una tabla que refleje la composición por género de la Cámara de Diputadxs en 2018
dip_2020_genero <- votaciones_dip_2020_g %>%
filter(Género =="FEMENINO"| Género=="MASCULINO") %>%
dplyr::count(Género) %>%
rename(Cantidad = n, Genero = Género) %>%
arrange(desc(Cantidad)) %>%
mutate(Porcentaje = paste0(round(Cantidad/sum(Cantidad) * 100, 2), "%")) %>%
transform(Genero = reorder(Genero, -Cantidad))
dip_2020_genero
## Genero Cantidad Porcentaje
## 1 MASCULINO 149 58.2%
## 2 FEMENINO 107 41.8%
4.27. Creamos el gráfico de barras con los valores de la composición por género de la Cámara de Diputadxs en 2018.
dip_2020_genero_plot <- ggplot(dip_2020_genero,
aes(x = Genero, y = Cantidad, p = Porcentaje, fill = Genero, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Genero))) +
geom_bar(stat = 'identity') +
scale_y_continuous(breaks = seq(0, 180, by = 25)) +
scale_fill_manual(values = c("#32a89b", "#9D2ADB")) +
labs(title = "Composición Cámara de Diputados por Género 2020",
caption = "Fuente: Cámara de Diputados de la Nación",
x = "Género",
y = "Cantidad") +
theme_minimal() +
geom_text(aes(x = Genero, y = Cantidad, label= Cantidad), position=position_dodge(width=0.9), vjust=-1.50)
4.28. Armamos un plotly con el gráfico anterior.
dip_2020_genero_plotly <- ggplotly(dip_2020_genero_plot, tooltip = "text") %>% layout(title = list(text = paste0('Composición Cámara de Diputados por Género','<br>', '<sup>', 'Año 2020', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.20,
y = -0.12,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
dip_2020_genero_plotly
4.29.Creamos una nueva tabla que agrupe Género por tipo de Voto.
resultados_dip_2020_genero_voto <- votaciones_dip_2020_g %>%
dplyr::count(Género, Voto) %>%
rename(Cantidad = n) %>%
group_by(Género) %>%
mutate(Porcentaje = (round(Cantidad/sum(Cantidad) * 100, 2))) %>%
transform(Voto = reorder(Voto, -Cantidad))
resultados_dip_2020_genero_voto
## Género Voto Cantidad Porcentaje
## 1 FEMENINO ABSTENCION 3 2.80
## 2 FEMENINO AFIRMATIVO 59 55.14
## 3 FEMENINO NEGATIVO 45 42.06
## 4 MASCULINO ABSTENCION 3 2.01
## 5 MASCULINO AFIRMATIVO 72 48.32
## 6 MASCULINO AUSENTE 2 1.34
## 7 MASCULINO NEGATIVO 72 48.32
#Establecemos un orden de niveles para que se reflejen en el gráfico
resultados_dip_2020_genero_voto$Voto <- factor(as.character(resultados_dip_2020_genero_voto$Voto), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
4.30. Creamos un gráfico con la proporción de Voto por Género.
resultados_dip_2020_genero_voto_plot <- ggplot(resultados_dip_2020_genero_voto,
aes(x = Género, y = Cantidad, p = Porcentaje, fill = Voto, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Voto))) +
geom_bar(position ="fill", stat = 'identity') +
scale_y_continuous(labels = scales::percent) +
scale_fill_manual(values = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) +
labs(title = "Resultados de votación del proyecto IVE en Diputados por Género",
subtitle = "Año 2020",
caption = "Fuente: Cámara de Diputados de la Nación",
x = "Género",
y = "Cantidad") +
theme_minimal()
4.31. Creamos el plotly.
resultados_dip_2020_genero_voto_plotly <- ggplotly(resultados_dip_2020_genero_voto_plot, tooltip = "text") %>% layout(title = list(text = paste0('Resultados de votación del proyecto IVE en Diputados por Género','<br>', '<sup>', 'Año 2020', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.20,
y = -0.12,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
resultados_dip_2020_genero_voto_plotly
4. Resultados de votaciones en Senadorxs 2020 según Género
4.32. Seleccionamos las variables del dataset original, ordenamos alfabéticamente y creamos una columna nueva para asignar nro de id a cada legislador.
resultados_sen_2020_sg <- votaciones_sen_2020 %>%
select(Diputado, Voto) %>%
filter (Voto=='ABSTENCION'|Voto=='AFIRMATIVO'|Voto=='AUSENTE'|Voto=='NEGATIVO') %>%
rename(Diputade = Diputado) %>%
arrange(Diputade) %>%
mutate(id = row_number())
4.33. Importamos el dataset que contiene la variable Género de Economía Femini(s)ta.
resultados_sen_2020_cg <- read_excel("sen_genero_2020_ecofeminista.xlsx")
resultados_sen_2020_cg <- resultados_sen_2020_cg %>%
dplyr::rename(Género = Genero) %>%
select(Nombre, Género) %>%
arrange(Nombre) %>%
mutate(id = row_number())
4.34.Chequeamos las primeras y últimas observaciones de ambos datasets para corroborar que coincidan
head(resultados_sen_2020_sg)
## Diputade Voto id
## 1 Almirón., Ana Claudia AFIRMATIVO 1
## 2 Alperovich., José AUSENTE 2
## 3 Basualdo., Roberto Gustavo NEGATIVO 3
## 4 Blanco, Pablo Daniel NEGATIVO 4
## 5 Blas., Inés Imelda NEGATIVO 5
## 6 Braillard Poccard., Néstor Pedro NEGATIVO 6
head(resultados_sen_2020_cg)
## # A tibble: 6 x 3
## Nombre Género id
## <chr> <chr> <int>
## 1 Almirón, Ana Claudia Mujer 1
## 2 Alperovich, José Jorge Varón 2
## 3 Basualdo, Roberto Gustavo Varón 3
## 4 Blanco, Pablo Varón 4
## 5 Blas, Inés Imelda Mujer 5
## 6 Braillard Poccard, Néstor Pedro Varón 6
tail(resultados_sen_2020_sg)
## Diputade Voto id
## 67 Tapia, María Bélen NEGATIVO 67
## 68 Uñac, José Rubén. NEGATIVO 68
## 69 Vega., María Del Valle AUSENTE 69
## 70 Verasay., Pamela Fernanda AFIRMATIVO 70
## 71 Weretilneck, Alberto AFIRMATIVO 71
## 72 Zimmermann, Víctor NEGATIVO 72
tail(resultados_sen_2020_cg)
## # A tibble: 6 x 3
## Nombre Género id
## <chr> <chr> <int>
## 1 Tapia, Maria Belen Mujer 67
## 2 Uñac, Jose Ruben Varón 68
## 3 VEGA, MARIA CLARA DEL VALLE Mujer 69
## 4 Verasay, Pamela Fernanda Mujer 70
## 5 Weretilneck, Alberto Edgardo Varón 71
## 6 Zimmerman, Victor Varón 72
4.35. Unimos los dos datasets en base al id.
votaciones_sen_2020_g <- left_join(resultados_sen_2020_sg, resultados_sen_2020_cg, by = "id") #Unimos los dos resultados_dip_2018_cg
anyNA(votaciones_sen_2020_g) #Corroboramos que no haya valores faltantes
## [1] FALSE
votaciones_sen_2020_g <- votaciones_sen_2020_g %>%
select(Diputade, Voto, Género) %>% #Seleccionamos variables
mutate(Género = case_when(Género == "Varón" ~ "MASCULINO",
Género == "Mujer" ~ "FEMENINO")) #Modificamos la columna Género para que figure como "Femenino" y "Masculino" en lugar de "Varón" y "Mujer"
#Chequeamos cómo quedó el dataset
view(votaciones_sen_2020_g)
4.36. Creamos una tabla que refleje la composición por género de la Cámara de Senadorxs en 2020
sen_2020_genero <- votaciones_sen_2020_g %>%
filter(Género =="FEMENINO"| Género=="MASCULINO") %>%
dplyr::count(Género) %>%
rename(Cantidad = n, Genero = Género) %>%
arrange(desc(Cantidad)) %>%
mutate(Porcentaje = paste0(round(Cantidad/sum(Cantidad) * 100, 2), "%")) %>%
transform(Genero = reorder(Genero, -Cantidad))
sen_2020_genero
## Genero Cantidad Porcentaje
## 1 MASCULINO 44 61.11%
## 2 FEMENINO 28 38.89%
4.37. Creamos el gráfico de barras con los valores de la composición por género de la Cámara de Diputadxs en 2018.
sen_2020_genero_plot <- ggplot(sen_2020_genero,
aes(x = Genero, y = Cantidad, p = Porcentaje, fill = Genero, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Genero))) +
geom_bar(stat = 'identity') +
scale_y_continuous(breaks = seq(0, 180, by = 25)) +
scale_fill_manual(values = c("#32a89b", "#9D2ADB")) +
labs(title = "Composición Cámara de Senadores por Género 2020",
caption = "Fuente: Cámara de Senadores de la Nación",
x = "Género",
y = "Cantidad") +
theme_minimal() +
geom_text(aes(x = Genero, y = Cantidad, label= Cantidad), position=position_dodge(width=0.9), vjust=-1.50)
4.38. Armamos un plotly con el gráfico anterior.
sen_2020_genero_plotly <- ggplotly(sen_2020_genero_plot, tooltip = "text") %>% layout(title = list(text = paste0('Composición Cámara de Senadores por Género','<br>', '<sup>', 'Año 2020', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.20,
y = -0.12,
text = "Fuente: Cámara de Diputados de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
sen_2020_genero_plotly
4.39.Creamos una nueva tabla que agrupe Género por tipo de Voto.
resultados_sen_2020_genero_voto <- votaciones_sen_2020_g %>%
dplyr::count(Género, Voto) %>%
rename(Cantidad = n) %>%
group_by(Género) %>%
mutate(Porcentaje = (round(Cantidad/sum(Cantidad) * 100, 2))) %>%
transform(Voto = reorder(Voto, -Cantidad))
resultados_sen_2020_genero_voto
## Género Voto Cantidad Porcentaje
## 1 FEMENINO AFIRMATIVO 19 67.86
## 2 FEMENINO AUSENTE 1 3.57
## 3 FEMENINO NEGATIVO 8 28.57
## 4 MASCULINO ABSTENCION 1 2.27
## 5 MASCULINO AFIRMATIVO 19 43.18
## 6 MASCULINO AUSENTE 3 6.82
## 7 MASCULINO NEGATIVO 21 47.73
#Establecemos un orden de niveles para que se reflejen en el gráfico
resultados_sen_2020_genero_voto$Voto <- factor(as.character(resultados_sen_2020_genero_voto$Voto), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
4.40. Creamos un gráfico con la proporción de Voto por Género.
resultados_sen_2020_genero_voto_plot <- ggplot(resultados_sen_2020_genero_voto,
aes(x = Género, y = Cantidad, p = Porcentaje, fill = Voto, text = paste0("Cantidad: ", Cantidad,"\n", "Porcentaje: ", Porcentaje,"%", "\n", "Voto: ", Voto))) +
geom_bar(position ="fill", stat = 'identity') +
scale_y_continuous(labels = scales::percent) +
scale_fill_manual(values = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) +
labs(title = "Resultados de votación del proyecto IVE en Senadores por Género",
subtitle = "Año 2020",
caption = "Fuente: Cámara de Senadores de la Nación",
x = "Género",
y = "Cantidad") +
theme_minimal()
4.41. Creamos el plotly.
resultados_sen_2020_genero_voto_plotly <- ggplotly(resultados_sen_2020_genero_voto_plot, tooltip = "text") %>% layout(title = list(text = paste0('Resultados de votación del proyecto IVE en Senadores por Género','<br>', '<sup>', 'Año 2020', '</sup>')),
legend = list(orientation = "v", x = 1, y = 1),
annotations = list(x = 1.20,
y = -0.12,
text = "Fuente: Cámara de Senadores de la Nación",
showarrow = F,
xref='paper', yref='paper',
xanchor='right', yanchor='auto',
xshift=0, yshift=0,
font=list(size=12, color="black")))
resultados_sen_2020_genero_voto_plotly
5. Resultados de votaciones en Diputadxs 2018 según Rango de Edad
5.1. Importamos el dataset y hacemos un paneo general.
Listado_camaras <- read.csv("C:/Documents and Settings/emili/Documents/EMILIA/R/EANT - SOCIAL DATA ANALYTICS/EANT - GRUPO IVE/Listado_camaras.csv", sep = ",", encoding = "UTF-8")
View(Listado_camaras) # visión entera del dataset
names(Listado_camaras)[names(Listado_camaras) == "Orientación"] <- "Orientación"
summary(Listado_camaras) # resumen del dataset
## diputado_id Diputado Provincia Partido
## Min. : 1.0 Length:658 Length:658 Length:658
## 1st Qu.:165.2 Class :character Class :character Class :character
## Median :329.5 Mode :character Mode :character Mode :character
## Mean :329.5
## 3rd Qu.:493.8
## Max. :658.0
##
## Orientación VOTO EDAD camara
## Length:658 Length:658 Min. :26.00 Length:658
## Class :character Class :character 1st Qu.:44.00 Class :character
## Mode :character Mode :character Median :53.00 Mode :character
## Mean :52.99
## 3rd Qu.:62.00
## Max. :90.00
## NA's :37
## año RANGO_DE_EDAD Genero
## Min. :2018 Length:658 Length:658
## 1st Qu.:2018 Class :character Class :character
## Median :2019 Mode :character Mode :character
## Mean :2019
## 3rd Qu.:2020
## Max. :2020
##
colnames(Listado_camaras) # vemos nombres de columnas
## [1] "diputado_id" "Diputado" "Provincia" "Partido"
## [5] "Orientación" "VOTO" "EDAD" "camara"
## [9] "año" "RANGO_DE_EDAD" "Genero"
unique(Listado_camaras$EDAD) # revisamos los valores únicos de edad
## [1] 61 56 34 44 54 46 48 41 39 26 72 42 43 50 40 53 35 51 70 49 52 36 73 67 65
## [26] 57 47 58 64 59 33 68 62 69 NA 66 60 37 31 55 63 38 30 75 74 45 71 88 76 82
## [51] 90 77 78 29 28 80 32
5.2. Creamos un nuevo dataset por medio de un recorte.
diputados2018 <- Listado_camaras[1:257, ] #Creamos un nuevo dataset, eligiendo los datos que precisamos del original
diputados2018 <- diputados2018[-257, ] # eliminamos al Presidente de la Cámara
View(diputados2018) # visión entera del nuevo dataset
summary(diputados2018) # resumen dataset
## diputado_id Diputado Provincia Partido
## Min. : 1.00 Length:256 Length:256 Length:256
## 1st Qu.: 64.75 Class :character Class :character Class :character
## Median :128.50 Mode :character Mode :character Mode :character
## Mean :128.50
## 3rd Qu.:192.25
## Max. :256.00
##
## Orientación VOTO EDAD camara
## Length:256 Length:256 Min. :26.00 Length:256
## Class :character Class :character 1st Qu.:42.00 Class :character
## Mode :character Mode :character Median :52.00 Mode :character
## Mean :50.86
## 3rd Qu.:60.00
## Max. :75.00
## NA's :35
## año RANGO_DE_EDAD Genero
## Min. :2018 Length:256 Length:256
## 1st Qu.:2018 Class :character Class :character
## Median :2018 Mode :character Mode :character
## Mean :2018
## 3rd Qu.:2018
## Max. :2018
##
colnames(diputados2018) # vemos nombres de columnas
## [1] "diputado_id" "Diputado" "Provincia" "Partido"
## [5] "Orientación" "VOTO" "EDAD" "camara"
## [9] "año" "RANGO_DE_EDAD" "Genero"
unique(diputados2018$EDAD) # vemos los valores únicos de la columna EDAD
## [1] 61 56 34 44 54 46 48 41 39 26 72 42 43 50 40 53 35 51 70 49 52 36 73 67 65
## [26] 57 47 58 64 59 33 68 62 69 NA 66 60 37 31 55 63 38 30 75 74 45 71
5.3. Con la función “group by” agrupamos por rango de edad, también por voto y contamos la frecuencia por rango de edad. Además agregamos una variable que calcule porcentaje de tipos de voto en relación a cada rango. Las asignaremos a dos datasets que usaremos en los gráficos.
torta_dip_2018 <- diputados2018 %>%
group_by(RANGO_DE_EDAD) %>%
dplyr::count() %>%
ungroup() %>%
mutate(perc = round(n/sum(n) *100, 2))
torta_dip_2018
## # A tibble: 6 x 3
## RANGO_DE_EDAD n perc
## <chr> <int> <dbl>
## 1 25-35 18 7.03
## 2 36-45 60 23.4
## 3 46-55 62 24.2
## 4 56-65 58 22.7
## 5 66-75 23 8.98
## 6 <NA> 35 13.7
torta_dip_2018$RANGO_DE_EDAD[6] <- "S/D" # Reasignamos categoría de NAs
unique(torta_dip_2018$RANGO_DE_EDAD)
## [1] "25-35" "36-45" "46-55" "56-65" "66-75" "S/D"
barra_dip_2018 <- diputados2018 %>%
group_by(VOTO) %>%
dplyr::count(RANGO_DE_EDAD) %>%
mutate(perc1 = round(n/sum(n) *100, 2))
barra_dip_2018
## # A tibble: 14 x 4
## # Groups: VOTO [4]
## VOTO RANGO_DE_EDAD n perc1
## <chr> <chr> <int> <dbl>
## 1 ABSTENCION 25-35 1 100
## 2 AFIRMATIVO 25-35 10 7.75
## 3 AFIRMATIVO 36-45 33 25.6
## 4 AFIRMATIVO 46-55 29 22.5
## 5 AFIRMATIVO 56-65 27 20.9
## 6 AFIRMATIVO 66-75 11 8.53
## 7 AFIRMATIVO <NA> 19 14.7
## 8 AUSENTE 56-65 1 100
## 9 NEGATIVO 25-35 7 5.6
## 10 NEGATIVO 36-45 27 21.6
## 11 NEGATIVO 46-55 33 26.4
## 12 NEGATIVO 56-65 30 24
## 13 NEGATIVO 66-75 12 9.6
## 14 NEGATIVO <NA> 16 12.8
barra_dip_2018$RANGO_DE_EDAD[7] <- "S/D"
barra_dip_2018$RANGO_DE_EDAD[14] <- "S/D" # Reasignamos categoría a NAs
unique(barra_dip_2018$RANGO_DE_EDAD)
## [1] "25-35" "36-45" "46-55" "56-65" "66-75" "S/D"
5.4. Reordenamos los niveles de torta_dip_2018 y barra_dip_2018 para que queden impactados en los gráficos.
torta_dip_2018$RANGO_DE_EDAD <- factor(as.character(torta_dip_2018$RANGO_DE_EDAD), levels=c("25-35", "36-45", "46-55", "56-65", "66-75", "S/D"))
barra_dip_2018$VOTO <- factor(as.character(barra_dip_2018$VOTO), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
barra_dip_2018$RANGO_DE_EDAD <- factor(as.character(barra_dip_2018$RANGO_DE_EDAD), levels=c("25-35", "36-45", "46-55", "56-65", "66-75", "S/D"))
5.5. Armamos dos gráficos interactivos con la función “hchart”, para eso debemos tener cargadas las librerías “highcharter” y “gganimate”.
# Grafico que representa el porcentaje de la votación y de representación en la cámara según rango de edad
dip_2018_con_torta <- hchart(
barra_dip_2018,
"bar",
hcaes(x = RANGO_DE_EDAD,"VOTO", y = perc1, p=perc1, group=VOTO), #asigno el color a las variables del Voto
color = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) %>%
hc_add_series(torta_dip_2018, "pie", hcaes(name = RANGO_DE_EDAD, y = perc), name = "Participacion sobre el total de miembros") %>%
hc_add_theme(hc_theme_ffx()) %>%
hc_plotOptions(
Voto = list(
colorByPoint = TRUE
),
pie = list(
colorByPoint = TRUE, center = c('80%', '30%') # asigno la ubicacion de la torta dentro de los ejes
,
size = 180,showInLegend = FALSE
)) %>%
hc_title(text = "Votación del proyecto IVE en la Cámara de Diputadxs Año 2018") %>%
hc_add_theme(hc_theme_economist()) %>% # Agrego titulo dentro de los ejes x e y.
hc_yAxis(
title = list(text = "Porcentaje de Voto"),
labels = list(format = "{value}%"), max = 100 ) %>%
hc_xAxis(
title = list(text = "Rango de edad")) %>%
hc_subtitle(text = "Porcentaje de la votación y de representación en la cámara según rango de edad") %>%
hc_credits(
enabled = TRUE, text = "Fuente: Cámara de Diputados de la Nación",
style = list(fontSize = "12px")
)
dip_2018_con_torta
#Cantidad de votos por rango de edad
dip_edad_2018_CANTIDAD <- hchart(
barra_dip_2018,
"bar",
hcaes(x = RANGO_DE_EDAD,"VOTO", y = n, p=perc1, group=VOTO), color = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")
) %>%
hc_add_theme(hc_theme_ffx()) %>%
hc_plotOptions(
Voto = list(
colorByPoint = TRUE
)) %>%
hc_title(text = "Votación del proyecto IVE en la Cámara de Diputadxs Año 2018") %>%
hc_add_theme(hc_theme_economist()) %>%
hc_yAxis(
title = list(text = "Cantidad de Votos"),
labels = list(format = "{value}"), max = 50) %>%
hc_xAxis(
title = list(text = "Rango de edad")) %>%
hc_subtitle(text = "Cantidad de votos por rango de edad") %>%
hc_credits(
enabled = TRUE, text = "Fuente: Cámara de Diputados de la Nación",
style = list(fontSize = "12px")
)
dip_edad_2018_CANTIDAD
5. Resultados de votaciones en Senadorxs 2018 según Rango de Edad
5.6. Creamos un nuevo dataset por medio de un recorte.
senadores2018 <- Listado_camaras[258:329, ] # Creamos un nuevo dataset, eligiendo los datos que precisamos del original
View(senadores2018) # visión entera del nuevo dataset
summary(senadores2018) # resumen dataset
## diputado_id Diputado Provincia Partido
## Min. :258.0 Length:72 Length:72 Length:72
## 1st Qu.:275.8 Class :character Class :character Class :character
## Median :293.5 Mode :character Mode :character Mode :character
## Mean :293.5
## 3rd Qu.:311.2
## Max. :329.0
## Orientación VOTO EDAD camara
## Length:72 Length:72 Min. :31.00 Length:72
## Class :character Class :character 1st Qu.:49.00 Class :character
## Mode :character Mode :character Median :57.50 Mode :character
## Mean :57.26
## 3rd Qu.:64.00
## Max. :88.00
## año RANGO_DE_EDAD Genero
## Min. :2018 Length:72 Length:72
## 1st Qu.:2018 Class :character Class :character
## Median :2018 Mode :character Mode :character
## Mean :2018
## 3rd Qu.:2018
## Max. :2018
colnames(senadores2018) # vemos nombre de columnas
## [1] "diputado_id" "Diputado" "Provincia" "Partido"
## [5] "Orientación" "VOTO" "EDAD" "camara"
## [9] "año" "RANGO_DE_EDAD" "Genero"
unique(senadores2018$EDAD) # vemos los valores únicos de edad
## [1] 47 34 63 61 59 52 64 49 68 50 31 57 46 62 66 54 65 44 70 45 72 53 55 56 88
## [26] 48 58 67 75 51 60 76 71 43 82 38
5.7. Con la función “group by” agrupo por rango de edad, también agrupamos por voto y contamos la frecuencia por rango de edad. además agregamos una variable que calcule porcentaje de tipos de voto en relación a cada rango. Las asignaremos a dos datasets que usaremos en los gráficos.
torta_sen_2018 <- senadores2018 %>%
group_by(RANGO_DE_EDAD) %>%
dplyr::count() %>%
ungroup() %>%
mutate(perc = round(n/sum(n) *100, 2))
torta_sen_2018
## # A tibble: 7 x 3
## RANGO_DE_EDAD n perc
## <chr> <int> <dbl>
## 1 25-35 3 4.17
## 2 36-45 5 6.94
## 3 46-55 23 31.9
## 4 56-65 26 36.1
## 5 66-75 12 16.7
## 6 76-85 2 2.78
## 7 86-96 1 1.39
barra_sen_2018 <- senadores2018 %>%
group_by(VOTO) %>%
dplyr::count(RANGO_DE_EDAD) %>%
mutate(perc1 = round(n/sum(n) *100, 2))
barra_sen_2018
## # A tibble: 15 x 4
## # Groups: VOTO [4]
## VOTO RANGO_DE_EDAD n perc1
## <chr> <chr> <int> <dbl>
## 1 ABSTENCION 46-55 1 50
## 2 ABSTENCION 56-65 1 50
## 3 AFIRMATIVO 25-35 2 6.45
## 4 AFIRMATIVO 36-45 2 6.45
## 5 AFIRMATIVO 46-55 9 29.0
## 6 AFIRMATIVO 56-65 11 35.5
## 7 AFIRMATIVO 66-75 6 19.4
## 8 AFIRMATIVO 76-85 1 3.23
## 9 AUSENTE 25-35 1 100
## 10 NEGATIVO 36-45 3 7.89
## 11 NEGATIVO 46-55 13 34.2
## 12 NEGATIVO 56-65 14 36.8
## 13 NEGATIVO 66-75 6 15.8
## 14 NEGATIVO 76-85 1 2.63
## 15 NEGATIVO 86-96 1 2.63
unique(barra_sen_2018$RANGO_DE_EDAD)
## [1] "46-55" "56-65" "25-35" "36-45" "66-75" "76-85" "86-96"
5.8. Reordenamos los niveles de barra_sen_2018 y torta_sen_2018 para que queden impactados en los gráficos.
barra_sen_2018$VOTO <- factor(as.character(barra_sen_2018$VOTO), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
barra_sen_2018$RANGO_DE_EDAD <- factor(as.character(barra_sen_2018$RANGO_DE_EDAD), levels=c("46-55", "56-65", "25-35", "36-45", "66-75", "76-85", "86-96"))
torta_sen_2018$RANGO_DE_EDAD <- factor(as.character(torta_sen_2018$RANGO_DE_EDAD), levels=c("25-35", "36-45", "46-55", "56-65","66-75", "76-85", "86-96"))
5.9. Realizamos dos graficos interactivos con la funcion “hchart”, para eso debemos tener cargadas las libreria “highcharter” y “gganimate”.
# Gráfico que representa el porcentaje de la votación y de representación en la cámara según rango de edad
sen_edad_2018_con_torta <- hchart(
barra_sen_2018,
"bar",
hcaes(x = RANGO_DE_EDAD,"VOTO", y = perc1, p=perc1, group=VOTO), # asignamos el color a las variables del Voto
color = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) %>%
hc_add_series(torta_sen_2018, "pie", hcaes(name = RANGO_DE_EDAD, y = perc), name = "Participacion sobre el total de miembros") %>%
hc_add_theme(hc_theme_ffx()) %>%
hc_plotOptions(
Voto = list(
colorByPoint = TRUE
),
pie = list(
colorByPoint = TRUE, center = c('80%', '30%') # asignamos la ubicación de la torta dentro de los ejes
,
size = 180,showInLegend = FALSE
)) %>%
hc_title(text = "Votación del proyecto IVE en la Cámara de Senadorxs Año 2018") %>%
hc_add_theme(hc_theme_economist()) %>% # Agregamos título dentro de los ejes x e y.
hc_yAxis(
title = list(text = "Porcentaje de Voto"),
labels = list(format = "{value}%"), max = 100) %>%
hc_xAxis(
title = list(text = "Rango de edad")) %>%
hc_subtitle(text = "Porcentaje de la votación y de representación en la cámara según rango de edad") %>%
hc_credits(
enabled = TRUE, text = "Fuente: Cámara de Senadores de la Nación",
style = list(fontSize = "12px")
)
sen_edad_2018_con_torta
# Cantidad de votos por rango de edad
sen_edad_2018_CANTIDAD <- hchart(
barra_sen_2018,
"bar",
hcaes(x = RANGO_DE_EDAD,"VOTO", y = n, p=perc1, group=VOTO), color = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")
) %>%
hc_add_theme(hc_theme_ffx()) %>%
hc_plotOptions(
Voto = list(
colorByPoint = TRUE
)) %>%
hc_title(text = "Votación del proyecto IVE en la Cámara de Senadorxs Año 2018") %>%
hc_add_theme(hc_theme_economist()) %>%
hc_yAxis(
title = list(text = "Cantidad de Votos"),
labels = list(format = "{value}"), max = 20 ) %>%
hc_xAxis(
title = list(text = "Rango de edad")) %>%
hc_subtitle(text = "Cantidad de votos por rango de edad") %>%
hc_credits(
enabled = TRUE, text = "Fuente: Cámara de Senadores de la Nación",
style = list(fontSize = "12px")
)
sen_edad_2018_CANTIDAD
5. Resultados de votaciones en Diputadxs 2020 según Rango de Edad
5.10. Creamos un nuevo dataset por medio de un recorte.
diputados2020 <- Listado_camaras[402:657, ] # Creamos un nuevo dataset, eligiendo los datos que precisamos del original
View(diputados2020) # visión entera del nuevo dataset
summary(diputados2020) # resumen dataset
## diputado_id Diputado Provincia Partido
## Min. :402.0 Length:256 Length:256 Length:256
## 1st Qu.:465.8 Class :character Class :character Class :character
## Median :529.5 Mode :character Mode :character Mode :character
## Mean :529.5
## 3rd Qu.:593.2
## Max. :657.0
## Orientación VOTO EDAD camara
## Length:256 Length:256 Min. :28.00 Length:256
## Class :character Class :character 1st Qu.:43.00 Class :character
## Mode :character Mode :character Median :54.00 Mode :character
## Mean :52.36
## 3rd Qu.:61.00
## Max. :80.00
## año RANGO_DE_EDAD Genero
## Min. :2020 Length:256 Length:256
## 1st Qu.:2020 Class :character Class :character
## Median :2020 Mode :character Mode :character
## Mean :2020
## 3rd Qu.:2020
## Max. :2020
colnames(diputados2020) # vemos nombres de columnas
## [1] "diputado_id" "Diputado" "Provincia" "Partido"
## [5] "Orientación" "VOTO" "EDAD" "camara"
## [9] "año" "RANGO_DE_EDAD" "Genero"
unique(diputados2020$EDAD) # vemos los valores únicos de EDAD
## [1] 72 60 57 68 65 39 51 40 62 43 49 66 45 69 78 54 67 48 42 50 63 58 76 56 41
## [26] 35 38 55 59 64 46 53 47 73 61 30 70 71 77 44 37 29 33 52 31 28 80 34 32 36
## [51] 74
5.11. Con la función “group by” agrupo por rango de edad, también agrupamos por voto y contamos la frecuencia por rango de edad. además agregamos una variable que calcule porcentaje de tipos de voto en relación a cada rango. Las asignaremos a dos datasets que usaremos en los gráficos.
torta_dip_2020 <- diputados2020 %>%
group_by(RANGO_DE_EDAD) %>%
dplyr::count() %>%
ungroup() %>%
mutate(perc = round(n/sum(n) *100, 2))
torta_dip_2020
## # A tibble: 6 x 3
## RANGO_DE_EDAD n perc
## <chr> <int> <dbl>
## 1 25-35 16 6.25
## 2 36-45 71 27.7
## 3 46-55 62 24.2
## 4 56-65 67 26.2
## 5 66-75 35 13.7
## 6 76-85 5 1.95
barra_dip_2020 <- diputados2020 %>%
group_by(VOTO) %>%
dplyr::count(RANGO_DE_EDAD) %>%
mutate(perc1 = round(n/sum(n) *100, 2))
barra_dip_2020
## # A tibble: 19 x 4
## # Groups: VOTO [4]
## VOTO RANGO_DE_EDAD n perc1
## <chr> <chr> <int> <dbl>
## 1 ABSTENCION 25-35 1 16.7
## 2 ABSTENCION 36-45 1 16.7
## 3 ABSTENCION 46-55 2 33.3
## 4 ABSTENCION 56-65 1 16.7
## 5 ABSTENCION 76-85 1 16.7
## 6 AFIRMATIVO 25-35 11 8.4
## 7 AFIRMATIVO 36-45 45 34.4
## 8 AFIRMATIVO 46-55 24 18.3
## 9 AFIRMATIVO 56-65 35 26.7
## 10 AFIRMATIVO 66-75 14 10.7
## 11 AFIRMATIVO 76-85 2 1.53
## 12 AUSENTE 36-45 1 50
## 13 AUSENTE 66-75 1 50
## 14 NEGATIVO 25-35 4 3.42
## 15 NEGATIVO 36-45 24 20.5
## 16 NEGATIVO 46-55 36 30.8
## 17 NEGATIVO 56-65 31 26.5
## 18 NEGATIVO 66-75 20 17.1
## 19 NEGATIVO 76-85 2 1.71
unique(barra_dip_2020$RANGO_DE_EDAD)
## [1] "25-35" "36-45" "46-55" "56-65" "76-85" "66-75"
5.12. Reordenamos los niveles de barra_dip_2020 y torta_dip_2020 para que queden impactados en los gráficos.
barra_dip_2020$VOTO <- factor(as.character(barra_dip_2020$VOTO), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
barra_dip_2020$RANGO_DE_EDAD <- factor(as.character(barra_dip_2020$RANGO_DE_EDAD), levels=c("25-35", "36-45", "46-55", "56-65", "76-85", "66-75"))
torta_dip_2020$RANGO_DE_EDAD <- factor(as.character(torta_dip_2020$RANGO_DE_EDAD), levels=c("25-35", "36-45", "46-55", "56-65","66-75", "76-85", "86-96"))
5.13. Realizamos dos graficos interactivos con la funcion “hchart”, para eso tenemos que cargar la libreria “highcharter” y “gganimate”
# Grafico que representa el porcentaje de la votación y de representación en la cámara según rango de edad
dip_2020_con_torta <- hchart(
barra_dip_2020,
"bar",
hcaes(x = RANGO_DE_EDAD,"VOTO", y = perc1, p=perc1, group=VOTO), #asigno el color a las variables del Voto
color = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) %>%
hc_add_series(torta_dip_2020, "pie", hcaes(name = RANGO_DE_EDAD, y = perc), name = "Participacion sobre el total de miembros") %>%
hc_add_theme(hc_theme_ffx()) %>%
hc_plotOptions(
Voto = list(
colorByPoint = TRUE
),
pie = list(
colorByPoint = TRUE, center = c('80%', '30%') # asigno la ubicacion de la torta dentro de los ejes
,
size = 180,showInLegend = FALSE
)) %>%
hc_title(text = "Votación del proyecto IVE en la Cámara de Diputadxs Año 2020") %>%
hc_add_theme(hc_theme_economist()) %>% # Agrego titulo dentro de los ejes x e y.
hc_yAxis(
title = list(text = "Porcentaje de Voto"),
labels = list(format = "{value}%"), max = 100 ) %>%
hc_xAxis(
title = list(text = "Rango de edad")) %>%
hc_subtitle(text = "Porcentaje de la votación y de representación en la cámara según rango de edad") %>%
hc_credits(
enabled = TRUE, text = "Fuente: Cámara de Diputados de la Nación",
style = list(fontSize = "12px")
)
dip_2020_con_torta
#Cantidad de votos por rango de edad
dip_edad_2020_CANTIDAD <- hchart(
barra_dip_2020,
"bar",
hcaes(x = RANGO_DE_EDAD,"VOTO", y = n, p=perc1, group=VOTO), color = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")
) %>%
hc_add_theme(hc_theme_ffx()) %>%
hc_plotOptions(
Voto = list(
colorByPoint = TRUE
)) %>%
hc_title(text = "Votación del proyecto IVE en la Cámara de Diputadxs Año 2020") %>%
hc_add_theme(hc_theme_economist()) %>%
hc_yAxis(
title = list(text = "Cantidad de Votos"),
labels = list(format = "{value}"), max = 50 ) %>%
hc_xAxis(
title = list(text = "Rango de edad")) %>%
hc_subtitle(text = "Cantidad de votos por rango de edad") %>%
hc_credits(
enabled = TRUE, text = "Fuente: Cámara de Diputados de la Nación",
style = list(fontSize = "12px")
)
dip_edad_2020_CANTIDAD
5. Resultados de votaciones en Senadorxs 2020 según Rango de Edad
5.14. Creamos un nuevo dataset por medio de un recorte.
senadores2020 <- Listado_camaras[330:401, ] # Creamos un nuevo dataset, eligiendo los datos que preciso del original.
View(senadores2020) # visión entera del nuevo dataset
rownames(senadores2020) <- NULL # Reiniciamos el nro de filas
unique(senadores2020$VOTO)
## [1] "AFIRMATIVO" "AUSENTE" "NEGATIVO" NA
# Reasignamos el voto de Snopek a ABSTENCION
senadores2020$VOTO[63]= "ABSTENCION"
unique(senadores2020$VOTO) # Chequeamos
## [1] "AFIRMATIVO" "AUSENTE" "NEGATIVO" "ABSTENCION"
summary(senadores2020) # Resumen dataset
## diputado_id Diputado Provincia Partido
## Min. :330.0 Length:72 Length:72 Length:72
## 1st Qu.:347.8 Class :character Class :character Class :character
## Median :365.5 Mode :character Mode :character Mode :character
## Mean :365.5
## 3rd Qu.:383.2
## Max. :401.0
## Orientación VOTO EDAD camara
## Length:72 Length:72 Min. :33.00 Length:72
## Class :character Class :character 1st Qu.:50.00 Class :character
## Mode :character Mode :character Median :58.00 Mode :character
## Mean :57.49
## 3rd Qu.:65.00
## Max. :90.00
## año RANGO_DE_EDAD Genero
## Min. :2020 Length:72 Length:72
## 1st Qu.:2020 Class :character Class :character
## Median :2020 Mode :character Mode :character
## Mean :2020
## 3rd Qu.:2020
## Max. :2020
colnames(senadores2020) # vemos los nombres de las columnas
## [1] "diputado_id" "Diputado" "Provincia" "Partido"
## [5] "Orientación" "VOTO" "EDAD" "camara"
## [9] "año" "RANGO_DE_EDAD" "Genero"
unique(senadores2020$EDAD) # Vemos los valores únicos de la columna EDAD
## [1] 36 65 63 67 61 66 51 70 33 49 69 48 45 68 40 56 47 59 57 46 50 55 64 58 90
## [26] 54 60 77 53 62 78 39 73 71 52
5.15. Con la función “group by” agrupo por rango de edad, también agrupamos por voto y contamos la frecuencia por rango de edad. además agregamos una variable que calcule porcentaje de tipos de voto en relación a cada rango. Las asignaremos a dos datasets que usaremos en los gráficos.
torta_sen_2020 <- senadores2020 %>%
group_by(RANGO_DE_EDAD) %>%
dplyr::count() %>%
ungroup() %>%
mutate(perc = round(n/sum(n) *100, 2))
torta_sen_2020
## # A tibble: 7 x 3
## RANGO_DE_EDAD n perc
## <chr> <int> <dbl>
## 1 25-35 1 1.39
## 2 36-45 7 9.72
## 3 46-55 21 29.2
## 4 56-65 28 38.9
## 5 66-75 12 16.7
## 6 76-85 2 2.78
## 7 86-96 1 1.39
barra_sen_2020 <- senadores2020 %>%
group_by(VOTO) %>%
dplyr::count(RANGO_DE_EDAD) %>%
mutate(perc1 = round(n/sum(n) *100, 2))
barra_sen_2020
## # A tibble: 14 x 4
## # Groups: VOTO [4]
## VOTO RANGO_DE_EDAD n perc1
## <chr> <chr> <int> <dbl>
## 1 ABSTENCION 36-45 1 100
## 2 AFIRMATIVO 25-35 1 2.63
## 3 AFIRMATIVO 36-45 6 15.8
## 4 AFIRMATIVO 46-55 12 31.6
## 5 AFIRMATIVO 56-65 10 26.3
## 6 AFIRMATIVO 66-75 8 21.0
## 7 AFIRMATIVO 76-85 1 2.63
## 8 AUSENTE 46-55 2 50
## 9 AUSENTE 56-65 1 25
## 10 AUSENTE 86-96 1 25
## 11 NEGATIVO 46-55 7 24.1
## 12 NEGATIVO 56-65 17 58.6
## 13 NEGATIVO 66-75 4 13.8
## 14 NEGATIVO 76-85 1 3.45
5.16. Reordenamos los niveles de barra_sen_2020 y torta_sen_2020 para que queden impactados en los gráficos.
barra_sen_2020$VOTO <- factor(as.character(barra_sen_2020$VOTO), levels=c("NEGATIVO", "AFIRMATIVO", "ABSTENCION", "AUSENTE"))
barra_sen_2020$RANGO_DE_EDAD <- factor(as.character(barra_sen_2020$RANGO_DE_EDAD), levels=c("25-35", "36-45", "46-55", "56-65","66-75", "76-85", "86-96"))
torta_sen_2020$RANGO_DE_EDAD <- factor(as.character(torta_sen_2020$RANGO_DE_EDAD), levels=c("25-35", "36-45", "46-55", "56-65","66-75", "76-85", "86-96"))
5.17. Realizamos dos gráficos interactivos con la funcion “hchart”.
# Grafico que representa el porcentaje de la votación y de representación en la cámara según rango de edad
sen_edad_2020_con_torta <- hchart(
barra_sen_2020,
"bar",
hcaes(x = RANGO_DE_EDAD,"VOTO", y = perc1, p=perc1, group=VOTO), #asigno el color a las variables del Voto
color = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")) %>%
hc_add_series(torta_sen_2020, "pie", hcaes(name = RANGO_DE_EDAD, y = perc), name = "Participacion sobre el total de miembros") %>%
hc_add_theme(hc_theme_ffx()) %>%
hc_plotOptions(
Voto = list(
colorByPoint = TRUE
),
pie = list(
colorByPoint = TRUE, center = c('80%', '30%') # asigno la ubicacion de la torta dentro de los ejes
,
size = 180,showInLegend = FALSE
)) %>%
hc_title(text = "Votación del proyecto IVE en la Cámara de Senadorxs Año 2020") %>%
hc_add_theme(hc_theme_economist()) %>% # Agrego titulo dentro de los ejes x e y.
hc_yAxis(
title = list(text = "Porcentaje de Voto"),
labels = list(format = "{value}%"), max = 100 ) %>%
hc_xAxis(
title = list(text = "Rango de edad")) %>%
hc_subtitle(text = "Porcentaje de la votación y de representación en la cámara según rango de edad") %>%
hc_credits(
enabled = TRUE, text = "Fuente: Cámara de Senadores de la Nación",
style = list(fontSize = "12px")
)
sen_edad_2020_con_torta
#Cantidad de votos por rango de edad
sen_edad_2020_CANTIDAD <- hchart(
barra_sen_2020,
"bar",
hcaes(x = RANGO_DE_EDAD,"VOTO", y = n, p=perc1, group=VOTO), color = c("#eb3a34", "#58eb34", "#ebe834", "#9c9c91")
) %>%
hc_add_theme(hc_theme_ffx()) %>%
hc_plotOptions(
Voto = list(
colorByPoint = TRUE
)) %>%
hc_title(text = "Votación del proyecto IVE en la Cámara de Senadorxs Año 2020") %>%
hc_add_theme(hc_theme_economist()) %>%
hc_yAxis(
title = list(text = "Cantidad de Votos"),
labels = list(format = "{value}"), max = 20 ) %>%
hc_xAxis(
title = list(text = "Rango de edad")) %>%
hc_subtitle(text = "Cantidad de votos por rango de edad") %>%
hc_credits(
enabled = TRUE, text = "Fuente: Cámara de Senadores de la Nación",
style = list(fontSize = "12px")
)
sen_edad_2020_CANTIDAD
En cuanto a la orientación política, las votaciones de ambos años para las dos cámaras reflejan tendencias mayoritarias a favor del proyecto en el Kirchnerismo y partidos aliados mientras que en fuerzas como Cambiemos, la mayor parte de sus legisladorxs han votado en contra del proyecto.
De acuerdo con los gráficos de provincia, en ambas cámaras (diputados y senadores) y años (2018 y 2020) se observa una tendencia de las provincias del norte a rechazar el proyecto de ley, mientras tanto las del sur, a aprobarlo. En cuanto a las provincias del centro, estas tienden a mantener sus posiciones.
En relación a la votación de acuerdo al género, se observa, en primer lugar, una mayoría de hombres en la composición de ambas cámaras y en ambos períodos legislativos. Los resultados de las votaciones muestran un incremento de adhesión de las mujeres legisladoras en la comparación de períodos, en el caso de Diputadxs, el incremento es de 7 puntos porcentuales, mientras que en Senadorxs es de aproximadamente 18 puntos. En el caso de los legisladores hombres, se sostiene prácticamente igual la adhesión en ambos períodos. Aquí se puede observar un argumento más (entre otros) a favor de la ley de paridad en los cargos legislativos y de decisión.
Por último, se puede observar una fuerte postura negativa hacia la IVE en el grupo de edad dominante – 55 a 66 - en cuanto a proporción de los miembros de la Cámara de Senadorxs teniendo el 58 % del total de los votos negativos en el año 2020. No obstante, en la Cámara baja, si bien dentro del grupo hay una tendencia a rechazar la ley, es relativamente diminutiva y no del todo influyente en el resultado final. En cuanto las votaciones de 2018 y 2020, se puede observar en ambas cámaras el dominio del voto afirmativo del grupo joven, así como también, una tendencia hacia la aprobación en el rango 65 a 76 años en tanto a lxs senadorxs, decisión que no se refleja dentro de lxs diputadxs donde en ambos años predomina la negación a la IVE.