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)

Observar cómo varía la cantidad de heridos en relación con los vehículos involucrados revela mucho más que simples números: nos habla de la intensidad de cada accidente y de su verdadero alcance. A través de este gráfico, es posible explorar mes a mes cómo estas dos variables se entrelazan, permitiendo una lectura más profunda de la gravedad de los eventos viales.

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)

La mayoría de los incidentes en las vías son colisiones entre vehículos, superando el 85% del total. Sin embargo, los atropellos cargan con consecuencias mucho más graves para las víctimas. Esta visualización interactiva permite descubrir cómo se distribuyen los distintos tipos de accidentes, arrojando luz sobre los escenarios donde el riesgo toma formas distintas.

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

A lo largo del año, las cifras de heridos nos cuentan una historia marcada por altibajos. En ciertos meses, los números se disparan, revelando momentos críticos en la seguridad vial. Este gráfico interactivo invita a sumergirse en esos periodos clave, explorando con detalle las razones detrás de los picos y permitiendo una lectura más humana de los datos.

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.