setwd("~/UCE/III/estadistica")
#Carga de Datos
datos <- read.csv("Conjunto_Datos_Minerales.csv", header = TRUE, sep = ";", 
                  dec = ".")
#Extraer la variable
Litologia <- datos$hrock_type

#Tabla de distribución de frecuancia
TDFLitologia <- table(Litologia)
TablaLitologia<- as.data.frame(TDFLitologia)

#Elementos de la TDF
ni<-TablaLitologia$Freq
hi_porc<-(TablaLitologia$Freq/sum(ni))*100

#Verificar suma de frecuancias absolutas y relativas
sum(ni)
## [1] 304632
sum(hi_porc)
## [1] 100
#Cambiar el nombre de la columna
colnames(TablaLitologia) <- c("hrock_type", "ni")

#Agregar elementos a la tabla
TablaLitologia<- data.frame(TablaLitologia,hi_porc)

#GDF
#ni Global
barplot(TablaLitologia$ni, main = "Grafica No.1: Distribucion de cantidad de litologías",
        xlab="Nombre de las litologías", 
        ylab="Cantidad", 
        col="blue"
        ,names.arg = abbreviate(TablaLitologia$hrock_type, minlength = 4), 
        las=2,
        ylim = c(0,length(Litologia)),
        cex.names = 0.5,
        cex.axis = 0.5)

#ni Local
barplot(TablaLitologia$ni, main = "Grafica No.2: Distribucion de cantidad de nombres
        de los sitios",
        xlab="Nombre de los sitios",
        ylab="Cantidad", 
        col="blue",
        names.arg = abbreviate(TablaLitologia$hrock_type, minlength = 4),
        las=2,
        cex.names = 0.5,
        cex.axis = 0.5)

#hi Global
barplot(TablaLitologia$hi_porc, main = "Grafica No.3: Distribucion de cantidad de litologías",
        xlab="Nombre de las litologías",
        ylab="Porcentaje", 
        col="blue",
        names.arg = abbreviate(TablaLitologia$hrock_type, minlength = 4),
        las=2, 
        ylim = c(0,100),
        cex.names = 0.5,
        cex.axis = 0.5)

#hi Local
barplot(TablaLitologia$hi_porc, main = "Grafica No.4: Distribucion de cantidad de litologías",
        xlab="Nombre de las litologías", 
        ylab="Porcentaje",
        col="blue",
        names.arg = abbreviate(TablaLitologia$hrock_type, minlength = 4), 
        las=2,
        cex.names = 0.5,
        cex.axis = 0.5)

# Agrupar las 10 más comunes y sumar "Otras"
top_n <- 10
if (nrow(TablaLitologia) > top_n) {
  TablaLitologia <- TablaLitologia[order(-TablaLitologia$ni), ]
  top_litologias <- TablaLitologia[1:top_n, ]
  
  otras_ni <- sum(TablaLitologia$ni[(top_n + 1):nrow(TablaLitologia)])
  otras_hi_porc <- (otras_ni / sum(TablaLitologia$ni)) * 100
  
  otras_fila <- data.frame(hrock_type = "Otras",
                           ni = otras_ni,
                           hi_porc = otras_hi_porc
  )
  TablaLitologia_top10 <- rbind(top_litologias, otras_fila)
} else {
  TablaLitologia_top10 <- TablaLitologia
}

# Crear columna de nombres abreviados
TablaLitologia_top10$hrock_type_abbrev <- abbreviate(TablaLitologia_top10$hrock_type, minlength = 4)

print(TablaLitologia_top10)
##      hrock_type     ni    hi_porc hrock_type_abbrev
## 1               235103 77.1760682                  
## 1226  Limestone   6931  2.2752042              Lmst
## 55     Andesite   3382  1.1101920              Ands
## 526     Diorite   3297  1.0822895              Dirt
## 958      Gravel   3265  1.0717850              Grvl
## 923     Granite   2871  0.9424486              Grnt
## 869      Gneiss   2639  0.8662911              Gnss
## 2257  Sandstone   2614  0.8580845              Snds
## 2330     Schist   2365  0.7763465              Schs
## 1914  Quartzite   2158  0.7083957              Qrtz
## 11        Otras  40007 13.1328948              Otrs
#Verificar suma de frecuencias absoluta y relativa
print(sum(TablaLitologia_top10$ni))        
## [1] 304632
print(sum(TablaLitologia_top10$hi_porc))
## [1] 100
#GDF
#ni Global
barplot(TablaLitologia_top10$ni, 
        main = "Gráfica No.5: Distribución de cantidad de litologías (Top 10 y Otras)",
        xlab = "Litologías",
        ylab = "Cantidad",
        col = "blue",
        names.arg = TablaLitologia_top10$hrock_type_abbrev,
        las = 2,
        ylim = c(0,length(Litologia)),
        cex.names = 0.5,
        cex.axis = 0.5)

#ni Local
barplot(TablaLitologia_top10$ni, 
        main = "Gráfica No.6: Distribución de cantidad de litologías (Top 10 y Otras)",
        xlab = "Litologías",
        ylab = "Cantidad",
        col = "blue",
        names.arg = TablaLitologia_top10$hrock_type_abbrev,
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

#hi Global
barplot(TablaLitologia_top10$hi_porc, 
        main = "Gráfica No.7: Distribución porcentual de litologías (Top 10 + Otras)",
        xlab = "Litologías",
        ylab = "Porcentaje",
        col = "blue",
        names.arg = TablaLitologia_top10$hrock_type_abbrev,
        las = 2,
        ylim = c(0, 100),
        cex.names = 0.5,
        cex.axis = 0.5)

barplot(TablaLitologia_top10$hi_porc, 
        main = "Gráfica No.8: Distribución porcentual de litologías (Top 10 + Otras)",
        xlab = "Litologías",
        ylab = "Porcentaje",
        col = "blue",
        names.arg = TablaLitologia_top10$hrock_type_abbrev,
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

#Gráfica circular
# Ordenar la tabla por frecuencia relativa descendente
TablaLitologia_top10 <- TablaLitologia_top10[order(-TablaLitologia_top10$hi_porc), ]

# Crear escala de grises inversa a la frecuencia relativa
max_porc <- max(TablaLitologia_top10$hi_porc)
min_porc <- min(TablaLitologia_top10$hi_porc)
escala_gris <- 1 - ((TablaLitologia_top10$hi_porc - min_porc) / (max_porc - min_porc))

colores <- gray(escala_gris)

# Gráfico circular con escala de grises
pie(TablaLitologia_top10$hi_porc,
    labels = rep("", nrow(TablaLitologia_top10)),
    col = colores,
    main = "Gráfica No.9: Distribución porcentual de litologías (Top 10 + Otras)",
    radius = 1)

# Leyenda con porcentajes y nombres abreviados
legend("topright",
       legend = paste(TablaLitologia_top10$hrock_type_abbrev, ": ", 
                      round(TablaLitologia_top10$hi_porc, 1), "%"),
       fill = colores,
       cex = 0.7,
       bty = "n",
       xpd = TRUE)