Volem agafar les dades d’edat mitjana dels edificis segons el cadastre per secció censal i comparar-ho amb resultats electorals.
Importem llibreries necessàries
library(tidyverse)
library(lubridate)
library(stringi)
library(readxl)
Dades electorals
Importem les dades electorals des del portal de transperència de la Generalitat i les transformem segons la necessitat.
# Eleccions al Parlament de Catalunya 2021 - Recompte provisional per mesa
meses <- read.csv('https://analisi.transparenciacatalunya.cat/api/views/ix2p-vyw4/rows.csv?accessType=DOWNLOAD&sorting=true',as.is = TRUE, encoding = 'UTF-8') %>%
as_tibble()
seccions <- meses %>%
gather('partit','vots', -colnames(meses)[1:21]) %>%
filter(
str_detect(partit, 'Vots'),
vots > 0
) %>%
mutate(
partit = str_remove(partit,'Vots.')
) %>%
select(-contains('X..')) %>%
relocate(partit) %>%
select(-Mesa) %>%
group_by(
partit,
Codi.circumscripció,
Codi.municipi,
Nom.municipi,
Codi.comarca,
Nom.comarca,
Districte,
Secció
) %>%
summarise_all(funs(sum)) %>%
ungroup() %>%
mutate(
vots.per = vots/Vots.vàlids*100,
codi.seccio = paste0(
sprintf("%02d", Codi.circumscripció),
sprintf("%03d", Codi.municipi),
sprintf("%02d", Districte),
sprintf("%03d", Secció)
)
) %>%
filter(
!partit == "ALIANZA.POR.EL.COMERCIO.Y.LA.VIVIENDA..ALIANZA.C.V." &
!partit == "ESCONS.EN.BLANC..ESCAÑOS.EN.BLANCO...EB." &
!partit == "FRONT.NACIONAL.DE.CATALUNYA..FNC." &
!partit == "IZQUIERDA.EN.POSITIVO..IZQP." &
!partit == "MOVIMENT.CORRENT.ROIG..M.C.R.." &
!partit == "MOVIMENT.PRIMÀRIES.PER.LA.INDEPENDÈNCIA.DE.CATALUNYA..MPIC." &
!partit == "PARTIT.COMUNISTA.DELS.TREBALLADORS.DE.CATALUNYA..PCTC." &
!partit == "PARTIT.NACIONALISTA.DE.CATALUNYA..PNC." &
!partit == "PER.UN.MÓN.MÉS.JUST..PUM.J." &
!partit == "RECORTES.CERO.GRUP.VERD.MUNICIPALISTES..RECORTES.CERO.GV.M." &
!partit == "SUPORT.CIVIL.CATALÀ..SCAT." &
!partit == "SOM.TERRES.DE.L.EBRE..SOM.TERRES.DE.L.EBRE." &
!partit == "UNIDOS.POR.LA.DEMOCRACIA...JUBILADOS..UNIDOS.SI...DEf...PDSJE...SOMOS.ESPAÑA." &
!partit == "UNIÓN.EUROPEA.DE.PENSIONISTAS..UEP."
) %>%
mutate(
partit = ifelse(partit == "CANDIDATURA.D.UNITAT.POPULAR.UN.NOU.CICLE.PER.GUANYAR..CUP.G.",'CUP',partit),
partit = ifelse(partit == "CIUTADANS...PARTIDO.DE.LA.CIUDADANÍA..Cs.",'Cs',partit),
partit = ifelse(partit == "EN.COMÚ.PODEM.PODEM.EN.COMÚ..ECP.PEC.",'ECP',partit),
partit = ifelse(partit == "ESQUERRA.REPUBLICANA.DE.CATALUNYA..ERC.",'ERC',partit),
partit = ifelse(partit == "JUNTS.PER.CATALUNYA..JxCat.",'JxCat',partit),
partit = ifelse(partit == "PARTIT.DELS.SOCIALISTES.DE.CATALUNYA..PSC.PSOE...PSC.",'PSC',partit),
partit = ifelse(partit == "PARTIT.DEMÒCRATA.EUROPEU.CATALÀ..PDeCAT.",'PDeCAT',partit),
partit = ifelse(partit == "PARTIT.POPULAR.PARTIDO.POPULAR..PP.",'PP',partit),
partit = ifelse(partit == "VOX..VOX.",'VOX',partit)
)
Dades cadastre per secció censal
Importem les dades d’edat dels edificis per secció censal. Les pots trobar a l’apartat ‘dades’.
buildings.bcn <- read_excel("C:/Users/catbr/MEGA/scripts/cadastre_mapa/mapa_buildings_cadastre/barcelona_age_building_seccions_censals.xlsx") %>%
transmute(codi.seccio = str_replace(MUNDISSEC,'^080193','08019'), build.age = MEAN_ConstAny) # cutrada per arreglar el codi.seccio
Unifiquem les dades
Unifiquem les dues bases de dades i limitem la dispersió.
seccions <- seccions %>%
left_join(buildings.bcn) %>%
filter(!is.na(build.age)) %>%
mutate(build.age.1900 = ifelse(build.age < 1900, 1900, build.age))
Grafiquem la comparació
seccions %>%
ggplot(aes(build.age.1900,vots.per, fill = partit)) +
geom_point(alpha = 0.5, aes(colour = partit)) +
geom_smooth(method = ) +
facet_wrap(~partit, scales = 'free') +
theme_linedraw() +
theme(plot.title = element_text(hjust = 0.5, face = 'bold'), plot.subtitle = element_text(hjust = 0.5)) +
labs(title = "Distribució de vot per edat de l'edifici",
subtitle = 'Any de contrucció mitjà per secció censal a Barcelona 14F',
caption = 'Font: Catastro INSPIRE | @rogersanjaume') +
xlab('Any de construcció') +
ylab('Percentatge de votants') +
scale_x_continuous(breaks = seq(1900, 2020, by = 10)) +
scale_fill_manual(values=c("#EB6109", "#ffed00", "#6e236e", "#FBD30A", "#00C7AE", "#0082ca", "#17589D", "#d1081c", "#7CBD2A")) +
scale_color_manual(values=c("#EB6109", "#ffed00", "#6e236e", "#FBD30A", "#00C7AE", "#0082ca", "#17589D", "#d1081c", "#7CBD2A")) +
theme(legend.position = "none")