Diagrama de parlamento

Portafolio
Dataviz
Resumen

Una visualización de datos correcta puede expresar de forma resumida y clara gran cantidad de información, ayudando a interpretar y asimilar la información más facilmente.

Parlamento semicircular

Se representa los votos recibidos por cada partido político en las elecciones de noviembre de 2019.

El número de escaños representado para cada partido político es proporcional a los votos recibidos y no representa el método D’Hondt.

Librerías específicas.

Datos.

Código
datos_elecciones <- read_csv(file = "../data/datos_elecciones_brutos.csv")
datos_elecciones <- datos_elecciones |> filter(anno==max(anno)) |> filter(mes==max(mes))

# Elimino variables sin información
cols_sin_informacion <- datos_elecciones |> select(1:15) |>
  summarise(across(everything(), n_distinct)) |> pivot_longer(cols = everything()) |> 
  filter(value==1) |> select(name) |> pull()

datos_elecciones <- datos_elecciones |> select(-all_of(cols_sin_informacion))

# Pivoto los datos
datos_elecciones <- datos_elecciones |>
  pivot_longer(cols = -c(0:votos_candidaturas),
               names_to = "partido_politico",
               values_to = "votos") |> 
  drop_na(votos)

# Creo las siglas de cada partido y agrupo los votos por las siglas
source("../src/mutate_siglas.R")
datos_elecciones <- mutate_siglas(datos_elecciones)

datos_elecciones <- datos_elecciones |>
  summarise(votos = sum(votos), .by=everything()[! everything() %in% c('votos')])

datos_elecciones <- datos_elecciones |>
  mutate(siglas = fct_reorder(siglas, votos, .fun = sum))
Código
# Defino la paleta de colores
datos_elecciones <- datos_elecciones |>
  mutate(color_politico = case_when(siglas == "PP" ~ "#3399FF",
                         siglas == "PSOE" ~ "#F6350B",
                         siglas == "C's" ~ "#FF5824",
                         siglas == "PNV" ~ "#008135",
                         siglas == "BNG" ~ "#76b3dd",
                         siglas == "COMPROMÍS" ~ "#de6c25",
                         siglas == "CiU" ~ "#FF0000",
                         siglas == "UP" ~ "#6D50B3",
                         siglas == "ERC" ~ "#ffbf41",
                         siglas == "EH - BILDU" ~ "#00bda1",
                         siglas == "MÁS PAÍS" ~ "#E61455",
                         siglas == "VOX" ~ "#73B446",
                         TRUE ~ "#462B25"))

Código.

Código
parlamento <- datos_elecciones |> 
  summarise(votos=sum(votos), .by = c(siglas, color_politico))

parlamento <- parlamento |> 
  mutate(asientos = round(350*votos/sum(votos))) |> 
  select(-votos)

semicircle <- parliament_data(election_data = parlamento,
                                 type = "semicircle", # Tipo de parlamento
                                 parl_rows = 7,      # Número de filas del parlamento
                                 party_seats = parlamento$asientos) # Asientos por partido

semi2 <- ggplot(semicircle, aes(x = x, y = y, colour = siglas)) +
  geom_parliament_seats() + 
  theme_ggparliament() +
  labs(title = "Segundas elecciones de 2.019", x = "", y = "") +
  scale_colour_manual(values = semicircle$color_politico, 
                      limits = semicircle$siglas) + 
  theme(legend.position="bottom")

semi2