EXPLORATORIOS EN R

Javier Rodríguez Barrios

MSc. Multivariados

Taller 2.3 Explor. Plancton

Figuras de Burbujas

# Librerías requeridas
library(tidyverse)
library(dplyr)
library(kableExtra)   # Para la edición de tablas
library(readxl)       # Cargar bases de Excel
library(ggrepel)      # insertar rótulos a los puntos
library(plotrix)      # Figuras de cajas con múltiples variables
library(ggplot2)      # Paquete gráfico
library(forcats)      # Para manipulación de factores
library(viridis)      # Opciones de paletas de colores
library(plotly)
library(hrbrthemes)
library(gapminder)

1. BURBUJAS CON DATOS HIPOTÉTICOS

# Cargar datos desde Excel
biol <- read_xlsx("plancton.xlsx", sheet = "Riqueza")

# Explorar estructura
# glimpse(biol)
# summary(biol)

# tabla con los datos
head(biol) %>%
  kbl() %>% 
  kable_classic(full_width = F)
# Datos de ejemplo
x <- c(2, 5, 7, 3, 6, 1, 9, 2)
y <- c(2.2, 2, 1, 2, 1, 4, 1, 6)
size <- c(100, 30, 50, 250, 120, 140, 80, 36)
group <- c("A", "A", "A", "B", "C", "B", "D", "B")
group1 <- c("A1", "A2", "A3", "B1", "C1", "B2", "D1", "B2")

# Data frame
datos <- data.frame(x, y, size, group, group1)

Base de datos en formato ancho

  # Figura de burbujas
  ggplot(datos, aes(x = x, y = y, size = size, color = group)) +
  geom_point() +
  scale_size(name = "Tamaño", range = c(1, 10)) +
  theme_bw()
# Gráfico mejorado
ggplot(datos, aes(x = x, y = group1, size = size, color = group)) +
  geom_point() +
  scale_size(name = "Tamaño", range = c(1, 10)) +
  theme_bw() +

Base de datos en formato ancho

  theme(
    panel.grid = element_blank(),        # Eliminar la cuadrícula del fondo
    axis.ticks.y = element_blank(),      # Eliminar las marcas del eje y
    axis.text.x = element_text(size = 12), # Ajustar el tamaño del texto en el eje x
  ) +
  geom_vline(xintercept = c(2.5, 5, 7.5), color = "gray") +  # Líneas verticales en los valores 2.5, 5 y 7.5
  guides(
    color = guide_legend(title = NULL,
                         override.aes = list(size = 3)),  # Eliminar el título de la leyenda para "group"
    size = guide_legend(title = NULL, 
                        override.aes = list(fill = NA, color = "black"))  # Modificar la leyenda del tamaño de los círculos
  )
# Gráfico mejorado
ggplot(datos, aes(x = x, y = group1, size = size, color = group)) +
  geom_point() +
  scale_size(name = "Tamaño", range = c(1, 10)) +
  theme_bw() +
  theme(
    panel.grid = element_blank(),    # Eliminar la cuadrícula del fondo
    axis.ticks.y = element_blank(),  # Eliminar las marcas del eje y
    axis.text.x = element_text(size = 12),# Ajustar el tamaño del texto en el eje x
  ) +
  geom_vline(xintercept = c(2.5, 5, 7.5), color = "gray") +  # Líneas verticales en los valores 2.5, 5 y 7.5
  guides(
    color = guide_legend(title = NULL,
                         override.aes = list(size = 3)),  # Eliminar el título de la leyenda para "group"
    size = guide_legend(title = NULL, 
                        override.aes = list(shape = 1, color = "black"))  # Modificar la leyenda del tamaño de los círculos
  )
# Gráfico mejorado
ggplot(datos, aes(x = x, y = group1, size = size, color = group)) +
  geom_point() +
  scale_size(name = "Tamaño", range = c(1, 10)) +
  theme_bw() +
  theme(
    panel.grid = element_blank(),    # Eliminar la cuadrícula del fondo
    axis.ticks.y = element_blank(),  # Eliminar las marcas del eje y
    axis.text.x = element_text(size = 12),  # Ajustar el tamaño del texto en el eje x
    axis.title.x = element_blank(),  # Quitar el título del eje x
    axis.title.y = element_blank(),  # Quitar el título del eje y
    legend.position = "right",  # Colocar las leyendas a la derecha
    legend.direction = "vertical"  # Asegurarse que las leyendas estén en orientación vertical
  ) +
  geom_vline(xintercept = c(2.5, 5, 7.5), color = "gray") +  # Líneas verticales en los valores 2.5, 5 y 7.5
  guides(
    color = guide_legend(title = NULL,
                         override.aes = list(size = 5)),  # Eliminar el título de la leyenda para "group"
    size = guide_legend(title = NULL, 
                        override.aes = list(shape = 1, color = "black", stroke = 1.2))  # Aumentar el grosor del contorno de los círculos en la leyenda
  )
# Gráfico mejorado
ggplot(datos, aes(x = x, y = group1, size = size, color = group)) +
  geom_point(alpha=0.7) +  # Transparecia de los colores
  scale_size(name = "Tamaño", range = c(1, 10)) +
  scale_color_viridis(discrete=TRUE, guide=FALSE) + # Escala de colores
  theme_bw() +
  theme(
    panel.grid = element_blank(),    # Eliminar la cuadrícula del fondo
    axis.ticks.y = element_line(color = "black"),  # Añadir marcas de graduación en el eje y
    axis.text.x = element_text(size = 12),  # Ajustar el tamaño del texto en el eje x
    axis.text.y = element_text(size = 12),  # Ajustar el tamaño del texto en el eje y
    axis.title.x = element_blank(),  # Quitar el título del eje x
    axis.title.y = element_blank(),  # Quitar el título del eje y
    legend.position = c(0.95, 0.01),  # Colocar las leyendas en la parte inferior derecha
    legend.justification = c(1, 0),  # Ajustar la justificación de las leyendas
    legend.direction = "vertical",  # Colocar las leyendas en orientación vertical
    plot.margin = margin(15, 20, 15, 20),  # Aumentar márgenes para evitar solapamiento
  ) +
  geom_vline(xintercept = c(2.5, 5, 7.5), color = "gray") +  # Líneas verticales en los valores 2.5, 5 y 7.5
  guides(
    size = guide_legend(title = NULL, 
                        override.aes = list(shape = 1, color = "#377eb8", stroke = 1.2)),  # Aumentar el grosor del contorno de los círculos en la leyenda

    color = guide_legend(title = NULL,
                         override.aes = list(size = 7))  # Eliminar el título de la leyenda para "group"
  )

2. PLANCTON ESTUARINO

# Cargar datos desde Excel
biol <- read_xlsx("plancton.xlsx", sheet = "Riqueza")

# Explorar estructura
# glimpse(biol)
# summary(biol)

# tabla con los datos
head(biol) %>%
  kbl() %>% 
  kable_classic(full_width = F)
# Organización de la base de datos
biol <- 
  biol %>% 
  # Convertir variables a factores
  mutate(across(c(Station, Size, Layers, Groups), as.factor)) %>% 
  # Abreviar nombres de los grupos taxonómicos
  mutate(Abrev = abbreviate(Groups, minlength = 4)) %>% 
  # Reorganizar las columnas
  select(Station, Size, Layers, Temperature, Salinity, Density, Groups, Abrev, Abundance)

Burbujas con leyenda afuera (Salinidad)

# Organización de la base de datos
biol <- 
  biol %>% 
  # Convertir variables a factores
  mutate(across(c(Station, Size, Layers, Groups), as.factor)) %>% 
  # Abreviar nombres de los grupos taxonómicos
  mutate(Abrev = abbreviate(Groups, minlength = 4)) %>% 
  # Reorganizar las columnas
  select(Station, Size, Layers, Temperature, Salinity, Density, 
  Groups, Abrev, Abundance)
# Calcular la Abundancia total por grupo y ordenar taxones
orden_abundancia <- 
  biol %>% 
  group_by(Groups) %>% 
  summarise(Total_Abundance = sum(Abundance, na.rm = TRUE)) %>% 
  arrange(desc(Total_Abundance)) %>% 
  pull(Groups)

Burbujas con leyenda afuera (Salinidad)

# Aplicar el orden a la variable categórica (invirtiendo el orden para que los más abundantes estén arriba)
biol <- biol %>% 
  mutate(Groups = factor(Groups, levels = rev(orden_abundancia)),
         Abrev = factor(Abrev, 
                 levels = rev(abbreviate(orden_abundancia, minlength = 4))))
# Calcular la Abundancia total por grupo y ordenar taxones
orden_abundancia <- 
  biol %>% 
  group_by(Groups) %>% 
  summarise(Total_Abundance = sum(Abundance, na.rm = TRUE)) %>% 
  arrange(desc(Total_Abundance)) %>% 
  pull(Groups)

Burbujas con leyenda afuera (Salinidad)

# Crear el gráfico de burbujas
ggplot(biol, aes(x = Salinity, y = Abrev, size = Abundance, color = Station)) +
  geom_point(alpha = 0.7) +  # Transparencia para mejor visualización
  scale_size(name = "Abundancia", range = c(1, 8)) + 
  scale_x_continuous(limits = c(10, 35), breaks = seq(10, 35, by = 5)) + 
  theme_bw() +
theme(
    panel.grid = element_blank(),
    axis.ticks.y = element_blank(),
    axis.text.x = element_text(size = 12),
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    legend.position = "right",
    legend.direction = "vertical"
  ) +
  # Líneas verticales grises
  geom_vline(xintercept = seq(10, 35, by = 5), color = "gray") + 
  # Circulos de la abundancia en la leyenda
  guides(
    size = guide_legend(title = NULL, 
                        override.aes = list(shape = 1, 
                                            color = "#377eb8", 
                                            stroke = 1.2)),  
  # Circulos de las Layers en la leyenda
color = guide_legend(title = NULL,   #  Eliminar el título de la leyenda para "group"
                         override.aes = list(size = 7))  
  )

Burbujas con leyenda afuera (Salinidad)

# Crear el gráfico de burbujas
ggplot(biol, aes(x = Salinity, y = Abrev, size = Abundance, color = Station)) +
  geom_point(alpha = 0.7) +  # Transparencia para mejor visualización
  scale_size(name = "Abundancia", range = c(1, 8)) + 
  scale_x_continuous(limits = c(10, 35), breaks = seq(10, 35, by = 5)) + 
  scale_color_viridis(discrete=TRUE, guide=FALSE) + # Escala de colores
  theme_bw() +
  theme(
    panel.grid = element_blank(),    # Eliminar la cuadrícula del fondo
    axis.ticks.y = element_line(color = "black"),  # Añadir marcas de graduación en el eje y
    axis.text.x = element_text(size = 8),  # Ajustar el tamaño del texto en el eje x
    axis.text.y = element_text(size = 8),  # Ajustar el tamaño del texto en el eje y
    axis.title.x = element_blank(),  # Quitar el título del eje x
    axis.title.y = element_blank(),  # Quitar el título del eje y
    legend.position = c(0.2, 0.01),  # Colocar las leyendas en la parte inferior derecha
    legend.justification = c(1, 0),  # Ajustar la justificación de las leyendas
    legend.direction = "vertical",  # Colocar las leyendas en orientación vertical
    plot.margin = margin(15, 20, 15, 20),  # Aumentar márgenes para evitar solapamiento
  ) +

Burbujas con leyenda adentro (Salinidad)

  # Líneas verticales grises
  geom_vline(xintercept = seq(10, 35, by = 5), color = "gray") + 
  # Circulos de la abundancia en la leyenda
  guides(
    size = guide_legend(title = NULL, 
                        override.aes = list(shape = 1, 
                                            color = "#377eb8", 
                                            stroke = 1.2)),  
  # Circulos de las Layers en la leyenda
color = guide_legend(title = NULL,   #  Eliminar el título de la leyenda para "group"
                         override.aes = list(size = 7))  
  )

Burbujas con leyenda adentro (Salinidad)

# Organización de la base de datos
biol <- 
  biol %>% 
  # Convertir variables a factores
  mutate(across(c(Station, Size, Layers, Groups), as.factor)) %>% 
  # Abreviar nombres de los grupos taxonómicos
  mutate(Abrev = abbreviate(Groups, minlength = 4)) %>% 
  # Reorganizar las columnas
  select(Station, Size, Layers, Temperature, Salinity, 
         Density, Groups, Abrev, Abundance)

# Calcular la Abundancia total por grupo y ordenar taxones
orden_abundancia <- 
  biol %>% 
  group_by(Groups) %>% 
  summarise(Total_Abundance = sum(Abundance, na.rm = TRUE)) %>% 
  arrange(desc(Total_Abundance)) %>% 
  pull(Groups)

# Aplicar el orden a la variable categórica (invirtiendo el orden para que los más abundantes estén arriba)
biol <- 
  biol %>% 
  mutate(Groups = factor(Groups, levels = rev(orden_abundancia)),
         Abrev = factor(Abrev, levels = rev(abbreviate(orden_abundancia, minlength = 4))))

Burbujas con leyenda adentro (Temperatura)

# Crear el gráfico de burbujas con Temperature en el eje X
ggplot(biol, aes(x = Temperature, y = Abrev, size = Abundance, color = Station)) +
  geom_point(alpha = 0.7) +  # Transparencia para mejor visualización
  scale_size(name = "Abundancia", range = c(1, 8)) +
  scale_x_continuous(limits = c(29, 30), 
                     breaks = seq(29, 30, by = 0.2)) + # Límites y gradación del eje x
  scale_color_viridis(discrete=TRUE, guide=FALSE) + # Escala de colores
  theme_bw() +
  theme(
    panel.grid = element_blank(),    # Eliminar la cuadrícula del fondo
    axis.ticks.y = element_line(color = "black"),  # Añadir marcas de graduación en el eje y
    axis.text.x = element_text(size = 8),  # Ajustar el tamaño del texto en el eje x
    axis.text.y = element_text(size = 8),  # Ajustar el tamaño del texto en el eje y
    axis.title.x = element_blank(),  # Quitar el título del eje x
    axis.title.y = element_blank(),  # Quitar el título del eje y
    legend.position = c(0.77, 0.01),  # Colocar las leyendas en la parte inferior derecha
    legend.justification = c(1, 0),  # Ajustar la justificación de las leyendas
    legend.direction = "vertical"  # Colocar las leyendas en orientación vertical
  ) +
    # Líneas verticales grises
  geom_vline(xintercept = seq(floor(min(biol$Temperature, na.rm = TRUE)), 
                              ceiling(max(biol$Temperature, na.rm = TRUE)), 
                              by = 0.2), color = "gray") +   # Intervalos para las líneas verticales
  # Círculos de la abundancia en la leyenda
  guides(
    size = guide_legend(title = NULL, 
                        override.aes = list(shape = 1, 
                                            color = "#377eb8", 
                                            stroke = 1.2)),  
  # Círculos de las Layers en la leyenda
  color = guide_legend(title = NULL,   #  Eliminar el título de la leyenda para "group"
                         override.aes = list(size = 6))  
  )

Burbujas con leyenda adentro (Temperatura)

library(plotly)  

# Crear el gráfico de burbujas con Temperature en el eje X
fig <-
ggplot(biol, aes(x = Temperature, y = Abrev, size = Abundance, color = Station)) +
  geom_point(alpha = 0.7) +  # Transparencia para mejor visualización
  scale_size(name = "Abundancia", range = c(1, 8)) +
  scale_x_continuous(limits = c(29, 30), 
                     breaks = seq(29, 30, by = 0.2)) + # Límites y gradación del eje x
  scale_color_viridis(discrete=TRUE, guide=FALSE) + # Escala de colores
  theme_bw() +
  theme(
    panel.grid = element_blank(),    # Eliminar la cuadrícula del fondo
    axis.ticks.y = element_line(color = "black"),  # Añadir marcas de graduación en el eje y
    axis.text.x = element_text(size = 8),  # Ajustar el tamaño del texto en el eje x
    axis.text.y = element_text(size = 8),  # Ajustar el tamaño del texto en el eje y
    axis.title.x = element_blank(),  # Quitar el título del eje x
    axis.title.y = element_blank(),  # Quitar el título del eje y
    legend.position = c(0.77, 0.01),  # Colocar las leyendas en la parte inferior derecha
    legend.justification = c(1, 0),  # Ajustar la justificación de las leyendas
    legend.direction = "vertical"  # Colocar las leyendas en orientación vertical
  ) +
    # Líneas verticales grises
  geom_vline(xintercept = seq(floor(min(biol$Temperature, na.rm = TRUE)), 
                              ceiling(max(biol$Temperature, na.rm = TRUE)), 
                              by = 0.2), color = "gray") +   # Intervalos para las líneas verticales
  # Círculos de la abundancia en la leyenda
  guides(
    size = guide_legend(title = NULL, 
                        override.aes = list(shape = 1, 
                                            color = "#377eb8", 
                                            stroke = 1.2)),  
  # Círculos de las Layers en la leyenda
  color = guide_legend(title = NULL,   #  Eliminar el título de la leyenda para "group"
                         override.aes = list(size = 6))  
  )

ggplotly(fig) 

Burbujas Animación

TALLER DE ENTRENAMIENTO

Objetivo 1: Poner en práctica los conceptos vistos en esta opción de exploración con burbujas, incorporando los siguientes requisitos en el estudio de caso:

  1. Organización de los datos taxonómicos en formato largo, junto a las variables ambientales.

  2. Figuras de burbujas con las principales variables ambientales identificadas.

TALLER DE ENTRENAMIENTO

Objetivo 2: Realizar el cuestioario.

2.3 Exploratorios burbujas

By Javier Rodriguez

2.3 Exploratorios burbujas

  • 20