filename <- 'C:/Sandbox/UOC/Vis_Dades/altres/2024_accidents_persones_gu_bcn.csv'
encoding <- guess_encoding(filename, n_max = 1000)
dadesVictimes <- read.csv(filename, sep=",", header=TRUE,
fileEncoding=paste(encoding[1,1]))
nVictimes <- nrow(dadesVictimes)
print(glue("En total van haver-hi {nVictimes} persones implicades en accidents de trànsit en Barcelona pel 2024."))
## En total van haver-hi 16771 persones implicades en accidents de trànsit en Barcelona pel 2024.
maskEixample = dadesVictimes$Nom_districte == "Eixample"
nEixample <- nrow(dadesVictimes[maskEixample, ])
print(glue("Detectem {nEixample} persones implicades en l'Eixample."))
## Detectem 4237 persones implicades en l'Eixample.
dadesEixample <- dadesVictimes[maskEixample, ]
maskVianants <- dadesEixample$Descripcio_tipus_persona == "Vianant"
nVianants <- nrow(dadesEixample[maskVianants, ])
print(glue("Detectem {nVianants} vianants implicats en l'Eixample."))
## Detectem 270 vianants implicats en l'Eixample.
dadesVianants <- dadesEixample[maskVianants, ]
dadesVianants <- dadesVianants[order(dadesVianants$Descripcio_victimitzacio),]
maskBuits <- dadesVianants$Descripcio_victimitzacio == ""
dadesVianants$Descripcio_victimitzacio[maskBuits] <- "Es desconeix"
unique(dadesVianants$Descripcio_victimitzacio)
## [1] "Es desconeix"
## [2] "Ferit greu: hospitalització superior a 24h"
## [3] "Ferit lleu: Amb assistència sanitària en lloc d'accident"
## [4] "Ferit lleu: Hospitalització fins a 24h"
## [5] "Ferit lleu: Rebutja assistència sanitària"
## [6] "Il.lès"
## [7] "Mort (després de 24h posteriors accident)"
Sources:
Data: https://opendata-ajuntament.barcelona.cat/data/es/dataset/accidents-persones-gu-bcn
https://r-graph-gallery.com/ggplot2-color.html
https://stefanocoretta.github.io/posts/2021-11-21-dot-matrix-charts/
dots <- tibble(
group = dadesVianants$Descripcio_victimitzacio,
x = rep(1:10, length.out = length(group)),
y = rep(1:(ceiling(length(group) / 10)), each = 10)[1:length(group)]
)
dots %>%
ggplot(aes(x, -y, colour = group)) +
geom_point(size = 5) +
theme_minimal() +
theme(
panel.grid = element_blank(),
axis.title = element_blank(),
axis.text = element_blank(),
legend.position = "right",
theme(legend.text = element_text(size=2))
) + labs(color = "Tipus de victimització") +
ggtitle("Dot matrix chart de vianants implicats en accidents de trànsit en funció\ndel tipus de victimització en el Districte de l'Eixample de Barcelona (2024)") +
scale_color_brewer(palette = "BuPu")
filename2 <- 'C:/Sandbox/UOC/Vis_Dades/2025_Loc_hab_edat_mitjana.csv'
encoding <- guess_encoding(filename2, n_max = 1000)
edat_mijana <- read.csv(filename2, sep=",", header=TRUE,
fileEncoding=paste(encoding[1,1]))
filename3 <- 'C:/Sandbox/UOC/Vis_Dades/2025_Loc_hab_sup_mitjana.csv'
encoding <- guess_encoding(filename3, n_max = 1000)
sup_mijana <- read.csv(filename3, sep=",", header=TRUE,
fileEncoding=paste(encoding[1,1]))
nrow(edat_mijana)
## [1] 1068
nrow(sup_mijana)
## [1] 1068
head(sup_mijana)
## Any Codi_districte Nom_districte Codi_barri Nom_barri Seccio_censal
## 1 2025 1 Ciutat Vella 1 el Raval 1
## 2 2025 1 Ciutat Vella 1 el Raval 2
## 3 2025 1 Ciutat Vella 1 el Raval 3
## 4 2025 1 Ciutat Vella 1 el Raval 4
## 5 2025 1 Ciutat Vella 1 el Raval 5
## 6 2025 1 Ciutat Vella 1 el Raval 6
## Sup_mitjana_m2
## 1 76.7
## 2 68.1
## 3 59.1
## 4 65.4
## 5 76.6
## 6 77.7
head(edat_mijana)
## Any Codi_districte Nom_districte Codi_barri Nom_barri Seccio_censal
## 1 2025 1 Ciutat Vella 1 el Raval 1
## 2 2025 1 Ciutat Vella 1 el Raval 2
## 3 2025 1 Ciutat Vella 1 el Raval 3
## 4 2025 1 Ciutat Vella 1 el Raval 4
## 5 2025 1 Ciutat Vella 1 el Raval 5
## 6 2025 1 Ciutat Vella 1 el Raval 6
## Edat_mitjana
## 1 72.0
## 2 98.1
## 3 95.0
## 4 91.5
## 5 104.6
## 6 123.9
df <- merge(x = sup_mijana, y = edat_mijana,
by = c("Nom_districte", "Codi_barri", "Nom_barri", "Seccio_censal"),
all = TRUE)
nrow(df)
## [1] 1068
ggplot(df, aes(x = Sup_mitjana_m2,
y = Edat_mitjana, fill = ..level..)) +
stat_density_2d(geom = "polygon") +
labs(title = "Contour plot del locals d'habitatge a la ciutat de Barcelona",
x = "Edat mitjana dels locals d'habitatge\n(per secció censals)",
y = "Superfície mitjana dels locals d'habitatge\n(per secció censals)") +
theme_minimal()
## Warning: The dot-dot notation (`..level..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(level)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Sources:
Data: https://opendata-ajuntament.barcelona.cat/data/ca/dataset/est-cadastre-habitatges-superficie-mitjana
https://opendata-ajuntament.barcelona.cat/data/ca/dataset/est-cadastre-habitatges-edat-mitjana
https://r-charts.com/correlation/contour-plot-ggplot2/
Usos de Contour plot https://clauswilke.com/dataviz/overlapping-points.html#contour-lines
filename3 <- 'C:/Sandbox/UOC/Vis_Dades/2024_accidents_gu_bcn.csv'
encoding <- guess_encoding(filename3, n_max = 1000)
dadesAccidents <- read.csv(filename3, sep=",", header=TRUE,
fileEncoding=paste(encoding[1,1]))
maskDuplicats <- duplicated(dadesAccidents$Numero_expedient)
nDuplicats <- nrow(dadesAccidents[maskDuplicats, ])
print(glue("Detectem {nDuplicats} registres duplicats i que eliminem."))
## Detectem 0 registres duplicats i que eliminem.
dadesAccidents <- dadesAccidents[!maskDuplicats, ]
nAccidents <- nrow(dadesAccidents)
print(glue("En total van haver-hi {nAccidents} accidents de trànsit a Barcelona pel 2024."))
## En total van haver-hi 7536 accidents de trànsit a Barcelona pel 2024.
maskGreus <- is.na(dadesAccidents$Numero_lesionats_greus)
nGreus <- nrow(dadesAccidents[!maskGreus, ])
propGreus <- round((nGreus / nAccidents) * 100, 2)
print(glue("En total van haver-hi {nGreus} accidents de trànsit amb ferits greus a Barcelona i representant el {propGreus} % del total pel 2024"))
## En total van haver-hi 241 accidents de trànsit amb ferits greus a Barcelona i representant el 3.2 % del total pel 2024
dadesGreus <- dadesAccidents[!maskGreus, ]
dadesGreus$Numero_lesionats_lleus[is.na(dadesGreus$Numero_lesionats_lleus)] <- 0
unique(dadesGreus$Numero_vehicles_implicats)
## [1] 2 1 3 5 4 8
unique(dadesGreus$Numero_lesionats_greus)
## [1] 1 2 6
unique(dadesGreus$Numero_lesionats_lleus)
## [1] 4 2 1 0 3
Sources:
Data: https://opendata-ajuntament.barcelona.cat/data/es/dataset/accidents-gu-bcn
https://r-charts.com/correlation/contour-plot-ggplot2/
https://r-charts.com/color-palettes/
Usos de Contour plot (per visualitzar probabilitat) https://clauswilke.com/dataviz/overlapping-points.html#contour-lines