# ============================================================
# LIBRERÍAS
# ============================================================
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readxl)
# ============================================================
# CARGA DE DATOS
# ============================================================
datos <- read_excel("C:/Users/USUARIO/Downloads/datos_nuevoartes.xlsx")
# ============================================================
# CONSOLIDACIÓN DE CATEGORÍAS
# ============================================================
datos <- datos %>%
mutate(
landslide_category_consol = case_when(
landslide_category %in% c("debris_flow", "earth_flow", "lahar") ~
"Flujos de suelo y rocas",
landslide_category %in% c("creep", "topple", "translational_slide") ~
"Deformación lenta del terreno",
landslide_category %in% c("complex", "other", "unknown") ~
"Movimientos complejos o no definidos",
landslide_category %in% c("riverbank_collapse", "snow_avalanche") ~
"Otros movimientos poco comunes",
landslide_category == "landslide" ~
"Deslizamiento de tierra",
landslide_category == "mudslide" ~
"Deslizamiento de lodo",
landslide_category == "rock_fall" ~
"Caída de rocas",
TRUE ~ landslide_category
)
)
# ============================================================
# TABLA DE FRECUENCIAS SIMPLES
# ============================================================
TDFMovimientos <- datos %>%
filter(!is.na(landslide_category_consol)) %>%
count(landslide_category_consol, name = "ni") %>%
mutate(
hi = round((ni / sum(ni)) * 100, 2)
)
# ============================================================
# VARIABLES AUXILIARES
# ============================================================
categorias <- TDFMovimientos$landslide_category_consol
ni <- TDFMovimientos$ni
hi <- TDFMovimientos$hi
# ============================================================
# DIAGRAMAS DE BARRAS
# ============================================================
# 1. FRECUENCIA ABSOLUTA LOCAL (ni)
barplot(
ni,
main = "Gráfica Nº1: Frecuencia de los tipos de movimientos en masa (Local)",
xlab = "Tipo de movimiento en masa",
ylab = "Cantidad",
col = "skyblue",
names.arg = categorias,
las = 2
)

# 2. FRECUENCIA ABSOLUTA GLOBAL (ni)
barplot(
ni,
main = "Gráfica Nº2: Frecuencia de los tipos de movimientos en masa (Global)",
xlab = "Tipo de movimiento en masa",
ylab = "Cantidad",
col = "skyblue",
names.arg = categorias,
las = 2,
ylim = c(0, max(ni) * 1.2)
)

# 3. FRECUENCIA RELATIVA LOCAL (hi)
barplot(
hi,
main = "Gráfica Nº3: Porcentaje de los tipos de movimientos en masa (Local)",
xlab = "Tipo de movimiento en masa",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = categorias,
las = 2
)

# 4. FRECUENCIA RELATIVA GLOBAL (hi)
barplot(
hi,
main = "Gráfica Nº4: Porcentaje de los tipos de movimientos en masa (Global)",
xlab = "Tipo de movimiento en masa",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = categorias,
las = 2,
ylim = c(0, 100)
)

# ============================================================
# DIAGRAMA CIRCULAR
# ============================================================
# Márgenes grandes para leyenda externa
par(mar = c(5, 4, 4, 10))
par(xpd = TRUE)
colores_pie <- c(
"#1f78b4", "#33a02c", "#e31a1c",
"#ff7f00", "#6a3d9a", "#b15928", "#a6cee3"
)
# Gráfico circular con porcentajes dentro
pie(
hi,
labels = paste0(hi, "%"),
main = "Gráfica Nº5: Distribución porcentual de los tipos de movimientos en masa",
col = colores_pie,
cex = 0.9
)
# Leyenda fuera del gráfico
legend(
x = 1.2, y = 0,
legend = categorias,
fill = colores_pie,
cex = 0.85,
bty = "n"
)

# Restaurar parámetros gráficos
par(xpd = FALSE)