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

https://r-charts.com/es/correlacion/contour/

https://r-charts.com/color-palettes/