rm(list=ls()) library(bipartite) library(betapart) library(readxl) library(pheatmap) library(gridExtra) library(grid) # 💡 PALETA ACLARADA: El gris máximo es 'gray30', así el negro de la fuente contrasta bien. color_escala_gris_clara <- colorRampPalette(c("white", "gray90", "gray70", "gray30"))(100) # 💡 Color para los números: NEGRO para máximo contraste sobre fondos claros color_numeros <- "black" color_borde <- "white" # 💡 CLAVE: Cuadrícula blanca # Leer y procesar datos ruta_archivo <- "data-plants.xlsx" # ⚠️ Usando "Hoja1" como en tu último script, verifica que sea la hoja correcta datos <- read_excel(ruta_archivo, sheet = "Hoja7") datos[] <- lapply(datos, as.numeric) beta <- beta.pair(datos, index.family = "sorensen") # Convertir y nombrar matrices beta_sor_matrix <- as.matrix(beta$beta.sor) beta_sim_matrix <- as.matrix(beta$beta.sim) beta_sne_matrix <- as.matrix(beta$beta.sne) nombres_sitios <- c("Chaco1", "Paraná1", "Chaco2", "Paraná2", "Chaco3", "Paraná3") rownames(beta_sor_matrix) <- colnames(beta_sor_matrix) <- nombres_sitios rownames(beta_sim_matrix) <- colnames(beta_sim_matrix) <- nombres_sitios rownames(beta_sne_matrix) <- colnames(beta_sne_matrix) <- nombres_sitios # =============================================== # MODIFICACIÓN CLAVE: lower.tri(..., diag = FALSE) # =============================================== # 1. Reemplazar SOLO el triángulo inferior (sin diagonal) con NA beta_sor_matrix[lower.tri(beta_sor_matrix, diag = FALSE)] <- NA beta_sim_matrix[lower.tri(beta_sim_matrix, diag = FALSE)] <- NA beta_sne_matrix[lower.tri(beta_sne_matrix, diag = FALSE)] <- NA # Guardar como PNG png("Beta_Diversity_Interactions_CuadriculaBlancaPLANTAS.png", width = 3000, height = 2200, res = 300) # Crear cada uno de los mapas de calor p1 <- pheatmap(beta_sor_matrix, main = "β-sor", display_numbers = TRUE, number_format = "%.2f", color = color_escala_gris_clara, number_color = color_numeros, border_color = color_borde, # 💡 CUADRÍCULA BLANCA na_col = "white", # Esto asegura que los NA sean blancos (fondo) cluster_rows = FALSE, cluster_cols = FALSE, legend = TRUE, silent = TRUE, fontsize = 8.5, fontsize_number = 10, cellheight = 20, cellwidth = 30) p2 <- pheatmap(beta_sim_matrix, main = "β-sim", display_numbers = TRUE, number_format = "%.2f", color = color_escala_gris_clara, number_color = color_numeros, border_color = color_borde, # 💡 CUADRÍCULA BLANCA na_col = "white", # Esto asegura que los NA sean blancos (fondo) cluster_rows = FALSE, cluster_cols = FALSE, legend = TRUE, silent = TRUE, fontsize = 8.5, fontsize_number = 10, cellheight = 20, cellwidth = 30) p3 <- pheatmap(beta_sne_matrix, main = "β-sne", display_numbers = TRUE, number_format = "%.2f", color = color_escala_gris_clara, number_color = color_numeros, border_color = color_borde, # 💡 CUADRÍCULA BLANCA na_col = "white", # Esto asegura que los NA sean blancos (fondo) cluster_rows = FALSE, cluster_cols = FALSE, legend = TRUE, silent = TRUE, fontsize = 8.5, fontsize_number = 10, cellheight = 20, cellwidth = 30) # Organizar y agregar título grid.arrange(p1$gtable, p2$gtable, p3$gtable, ncol = 1) grid.text("C)", x = 0.31, y = 0.95, gp = gpar(fontsize = 12, fontface = "bold")) dev.off()