Code
library(readxl)
library(tidyverse)
library(janitor)
library(ggthemes)
library(plotly)
library(gt)
library(moments)
library(stringr)
library(dplyr)
library(readr)
library(ggplot2)

En las calles de una ciudad que nunca descansa, el flujo constante de vehículos y peatones teje una red de historias diarias. Sin embargo, detrás del ritmo urbano, los accidentes viales emergen como una realidad que interrumpe vidas y deja huellas imborrables. En 2024, se registraron más de 500 incidentes en los barrios y vías periféricas de la ciudad, cada uno con un impacto humano que trasciende las cifras. Este dashboard interactivo explora los patrones, los meses críticos y los tipos de accidentes, invitando a reflexionar sobre la urgencia de una movilidad más segura.

Code
datos <- read_csv("Accidentes_Viales_20250607.csv") |> 
  clean_names()
gt(datos |> 
     slice_head(n = 5)) |> 
  tab_header(title = "Muestra de los Datos") |> 
  cols_label(
    fecha_ocurrencia = "Fecha",
    clase_de_accidente = "Tipo de Accidente",
    heridos = "Heridos",
    vehiculos_involucrados = "Vehículos"
  ) |> 
  tab_style(
    style = cell_fill(color = "#E6F3FA"),
    locations = cells_body()
  )
Muestra de los Datos
Fecha codigo_accidente direccion barrio Vehículos Heridos accidente_con muertes Tipo de Accidente
01/03/2024 12:00:00 AM A001602262 CALLE 14A CARRERA 34 BACHUE BACHUE 2 2 HERIDOS 0 CHOQUE
01/06/2024 12:00:00 AM A001602263 CALLE 14 CARRERA 28 SAN JOSÉ SAN JOSÉ 2 3 HERIDOS 0 CHOQUE
01/09/2024 12:00:00 AM A001602264 KILOMETRO 7+800 MTS No registra 1 1 HERIDOS 0 CHOQUE
01/12/2024 12:00:00 AM A001602265 AVENIDA 23 N. 24 - 07 LA TIZA LA TIZA 2 2 HERIDOS 0 CHOQUE
01/12/2024 12:00:00 AM A001602266 KILOMETRO 3+500 MTS VIA CHICHIMENE ESTACION ACACIAS No registra 2 1 HERIDOS 0 CHOQUE

El análisis de los datos revela que ciertos meses concentran un mayor número de heridos. Julio, noviembre y diciembre destacan como los más críticos, con 28, 30 y 32 heridos respectivamente. Esta visualización interactiva permite explorar la distribución de heridos por mes.

Code
tabla_mensual <- datos |> 
  mutate(Mes = format(as.Date(fecha_ocurrencia, format="%d/%m/%Y"), "%B")) |> 
  group_by(Mes) |> 
  summarise(
    Heridos = sum(heridos, na.rm = TRUE),
    Vehiculos = sum(vehiculos_involucrados, na.rm = TRUE)
  ) |> 
  slice(1:(n() - 1))

fig_mensual <- ggplot(tabla_mensual, aes(x = reorder(Mes, Heridos), y = Heridos)) +
  geom_col(fill = "#FF6F61") +
  coord_flip() +
  labs(title = "Heridos por Mes", x = "Mes", y = "Cantidad de Heridos") +
  theme_minimal() +
  theme(plot.margin = margin(10, 10, 10, 10), text = element_text(size = 14))

ggplotly(fig_mensual, height = 500)

La relación entre heridos y vehículos involucrados ofrece una perspectiva sobre la severidad de los accidentes. Este gráfico interactivo permite comparar ambos indicadores mes a mes.

Code
tabla_long <- tabla_mensual |> 
  pivot_longer(cols = c("Heridos", "Vehiculos"), names_to = "Categoria", values_to = "Cantidad")

fig_comparacion <- ggplot(tabla_long, aes(x = Mes, y = Cantidad, fill = Categoria)) +
  geom_col(position = "dodge") +
  labs(title = "Heridos vs. Vehículos Involucrados", x = "Mes", y = "Cantidad") +
  scale_fill_manual(values = c("Heridos" = "#FF6F61", "Vehiculos" = "#40C4FF")) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.margin = margin(10, 10, 10, 10), text = element_text(size = 14))

ggplotly(fig_comparacion, height = 500)

Los choques entre vehículos representan más del 85% de los incidentes, seguidos por los atropellos, que tienen un impacto humano más severo. Esta visualización interactiva muestra la distribución de los tipos de accidentes.

Code
tabla_clase <- datos |> 
  group_by(clase_de_accidente) |> 
  summarise(Accidentes = n()) |> 
  arrange(desc(Accidentes))

fig_clase <- ggplot(tabla_clase, aes(x = clase_de_accidente, y = Accidentes)) +
  geom_point(size = 4, color = "#D81B60") +
  geom_line(group = 1, color = "#D81B60") +
  labs(title = "Accidentes por Tipo", x = "Tipo de Accidente", y = "Cantidad") +
  theme_minimal() +
  theme(plot.margin = margin(10, 10, 10, 10), text = element_text(size = 14))

ggplotly(fig_clase, height = 500)
Code
gt(tabla_clase) |> 
  tab_header(title = "Distribución de Accidentes por Tipo") |> 
  cols_label(
    clase_de_accidente = "Tipo de Accidente",
    Accidentes = "Cantidad"
  ) |> 
  tab_style(
    style = cell_fill(color = "#E6F3FA"),
    locations = cells_body()
  )
Distribución de Accidentes por Tipo
Tipo de Accidente Cantidad
CHOQUE 450
ATROPELLO 54
OTRO 7
VOLCAMIENTO 1

El patrón de heridos a lo largo del año refleja picos de riesgo en meses específicos. Este gráfico interactivo destaca las tendencias y permite explorar los datos con mayor detalle.

Code
fig_tendencia <- ggplot(tabla_mensual, aes(x = reorder(Mes, Heridos), y = Heridos, group = 1)) +
  geom_line(color = "#D81B60", size = 1.2) +
  geom_point(size = 3, color = "#D81B60") +
  labs(title = "Tendencia Mensual de Heridos", x = "Mes", y = "Cantidad de Heridos") +
  theme_minimal() +
  coord_flip() +
  theme(plot.margin = margin(10, 10, 10, 10), text = element_text(size = 14))

ggplotly(fig_tendencia, height = 500)

Los datos muestran que los accidentes viales no son eventos aislados, sino el resultado de patrones claros relacionados con imprudencias, exceso de velocidad y falta de infraestructura adecuada. Con más de 500 incidentes en 2024, la ciudad enfrenta un desafío urgente: transformar la movilidad urbana. Invertir en educación vial, mejorar la señalización, fortalecer los controles de tránsito y promover una cultura de respeto en las vías son pasos esenciales para reducir estas cifras y evitar que cada número se convierta en una historia de pérdida.