library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(gt)
library(readxl)
# ============================================================
# ============================================================
# ============================================================
# ============================================================
# ============================================================
# ===========================================
# CARGAR EL ARCHIVO EXCEL
# (usa el nombre exacto de tu archivo)
# ===========================================
datos_nuevoartes <- read_excel("datos_nuevoartes.xlsx")
# ============================================================
# ============================================================
# Parámetro:
# Categorías con hi < 1% agrupadas por similitud genética y dinámica

datos_nuevoartes <- datos_nuevoartes %>%
  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 CONSOLIDADA EN ESPAÑOL
# ============================================================

tabla_category <- datos_nuevoartes %>%
  filter(!is.na(landslide_category_consol)) %>%
  group_by(landslide_category_consol) %>%
  summarise(ni = n(), .groups = "drop") %>%
  arrange(desc(ni)) %>%
  mutate(i = row_number(),
         hi = round((ni / sum(ni)) * 100, 2),
         i = as.character(i)) %>%
  rename(Categoría = landslide_category_consol) %>%
  select(i, Categoría, ni, hi)

# ======= FILA TOTAL =======
fila_total <- tibble(
  i = "SUMATORIA",
  Categoría = "TOTAL",
  ni = sum(tabla_category$ni),
  hi = round(sum(tabla_category$hi), 0)
)

tabla_category_final <- bind_rows(tabla_category, fila_total)

# ============================================================
# FORMATO GT
# ============================================================

tabla_category_gt <- tabla_category_final %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 1**"),
    subtitle = md("**Frecuencia y porcentaje de tipos de movimientos en masa (categorías consolidadas)**")
  ) %>%
  tab_source_note(
    source_note = md(
      "Criterio de consolidación: hi < 1% y similitud genética del proceso geomorfológico.  
       Autor: Alessandro"
    )
  )

tabla_category_gt
Tabla N° 1
Frecuencia y porcentaje de tipos de movimientos en masa (categorías consolidadas)
i Categoría ni hi
1 Deslizamiento de tierra 7648 69.33
2 Deslizamiento de lodo 2100 19.04
3 Caída de rocas 671 6.08
4 Movimientos complejos o no definidos 338 3.06
5 Flujos de suelo y rocas 208 1.89
6 Otros movimientos poco comunes 52 0.47
7 Deformación lenta del terreno 15 0.14
SUMATORIA TOTAL 11032 100.00
Criterio de consolidación: hi < 1% y similitud genética del proceso geomorfológico.
Autor: Alessandro
# ============================================================
# ORDEN Y ETIQUETAS EN ESPAÑOL PARA GRÁFICAS
# ============================================================

orden_categorias <- c(
  "Deslizamiento de tierra",
  "Deslizamiento de lodo",
  "Caída de rocas",
  "Movimientos complejos o no definidos",
  "Flujos de suelo y rocas",
  "Otros movimientos poco comunes",
  "Deformación lenta del terreno"
)

datos_nuevoartes <- datos_nuevoartes %>%
  mutate(
    landslide_category_consol = factor(
      landslide_category_consol,
      levels = orden_categorias
    )
  )

ggplot(
  datos_nuevoartes %>% filter(!is.na(landslide_category_consol)),
  aes(x = landslide_category_consol)
) +
  geom_bar(fill = "skyblue", color = "black") +
  labs(
    title = "Distribución de los tipos de movimientos en masa",
    x = "Tipo de movimiento",
    y = "Frecuencia"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 30, hjust = 1)
  )

tabla_category_hi <- datos_nuevoartes %>%
  filter(!is.na(landslide_category_consol)) %>%
  group_by(landslide_category_consol) %>%
  summarise(ni = n(), .groups = "drop") %>%
  mutate(
    hi = round((ni / sum(ni)) * 100, 2)
  )

ggplot(tabla_category_hi,
       aes(x = landslide_category_consol, y = hi)) +
  geom_col(fill = "steelblue", color = "black") +
  geom_text(
    aes(label = paste0(hi, "%")),
    vjust = -0.4,
    size = 4
  ) +
  labs(
    title = "Porcentaje de ocurrencia por tipo de movimiento en masa",
    x = "Tipo de movimiento",
    y = "Porcentaje (%)"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 30, hjust = 1)
  )

# ============================================================
# ============================================================
# ============================================================
# ============================================================
# ============================================================

# TABLA PARA DIAGRAMA CIRCULAR (BASE R)

TDFMovMasa <- datos_nuevoartes %>%
  filter(!is.na(landslide_category_consol)) %>%
  group_by(landslide_category_consol) %>%
  summarise(ni = n(), .groups = "drop") %>%
  arrange(desc(ni)) %>%   # orden por frecuencia (NO alfabético)
  mutate(
    hi = round((ni / sum(ni)) * 100, 2)
  )

# Paleta de colores

Colores <- colorRampPalette(c("lightskyblue", "darkblue"))

# Etiquetas con porcentaje

etiquetas <- paste(TDFMovMasa$hi, "%", sep = "")

# ============================================================
# ============================================================
# ============================================================
# ============================================================

# DIAGRAMA CIRCULAR (pie)
pie(
  TDFMovMasa$hi,
  radius = 1,
  col = Colores(nrow(TDFMovMasa)),
  main = "Gráfica Nº X: Porcentaje de incidencia de los tipos de movimientos en masa",
  labels = NA
)

# Etiquetas de la leyenda con porcentaje
leyenda_con_porcentaje <- paste0(
  TDFMovMasa$landslide_category_consol,
  " (",
  TDFMovMasa$hi,
  "%)"
)

legend(
  "topright",
  inset = c(-0.35, 0),  # mueve la leyenda fuera del gráfico
  title = "Leyenda",
  legend = leyenda_con_porcentaje,
  cex = 0.85,
  fill = Colores(nrow(TDFMovMasa)),
  title.cex = 1,
  bty = "n"
)

# ============================================================