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.
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.
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.
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.
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)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.
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.