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