¿Cómo diablos puedo representar mis datos?

Una introducción al lenguaje de programación

Xavier Clemente García

Objetivos

Aprender a crear gráficos a través de la interfaz gráfica de R y a través del paquete ggplot2.

¿Cómo puedo representar mis datos?

Ya hemos visto como importar, manejar y manipular datos. Pero ahora… ¿Cómo los represento?

boxplot(penguins, col = "darkred", main= "Medianas")

#Para generar un barplot debe generarse como matriz. 
penguins_matrix<-as.matrix(penguins)
barplot(penguins_matrix)

hist(penguins$bill_length_mm, main = "Histograma", ylab = "Frecuencia", col = "gold", xlab = "Eje x")

plot(penguins)

Quizás se trate de embellecer…

Una de las herramientas que nos podría ayudar a embellecer nuestros trabajos son los gráficos contenidos en la biblioteca o librería “ggplot2”

Introducción a Ggplot2

Es una librería que pertenece al tidyverse. Esta librería presenta un nuevo concepto sobre el “data visualization” y como este impacta en la presentación de los datos. Ofrece una mayor cantidad de opciones como etiquetas, escalas, temas con el fin de mejorar la legibilidad.

Grámatica de los gráficos

El concepto clave para entender la lógica de ggplot se encuentra en el siguiente script:

# ggplot(data) + aes(x, y) + geom_*()
#Capas, mapeos estéticos, geoms, escalas y temas: 
#(aes()), es la forma de mapear. 
ggplot(penguins)+
  geom_col(aes(x=penguins$species, y=penguins$bill_length_mm, fill = penguins$species), position = "stack")+
  labs(x = "Especies de pinguinos", y = "Y", title = "Ejemplo ")

Ejercicio práctico No. 1

Genera un gráfico con lo aprendido. Podrás usar alguna de las librerías vistas en clase. Tienes 10 minutos.

Boxplots

Resume la distribución de una variable numérica, mostrando los cuartiles, mediana y posibles outliers o valores atípicos.

mi_boxplot<-ggplot(penguins)+
  geom_boxplot(mapping = aes(x=penguins$species, y=penguins$flipper_length_mm, fill= penguins$species))+
  labs(x= "Especies de pinguinos", y= "Longitud de aleta", title = "Relación entre la longitud de la aleta y pinguinos", subtitle = "Datos reportados para pinguinos")+
  theme_minimal()
mi_boxplot

A partir de ahora probaremos el dataset “PlantGrowth” también.

Lineplots

Muestra cambios en los datos a lo largo del tiempo o en una secuencia. Puede ser util para evaluar cambios a lo largo del tiempo.

ggplot(penguins, aes(x = flipper_length_mm, y = bill_depth_mm, fill = species, color = species)) +
  geom_line() +
  theme_minimal()

Scatter Plot

Muestra la relación entre dos variables numérica. Se utiliza para identificar correlaciones o patrones en los datos.

library(ggplot2)
library(palmerpenguins)
ggplot(penguins)+
  geom_point(aes(x= bill_length_mm, y= penguins$flipper_length_mm, fill = species, color= species), stat = "identity", position= "identity")

Barplots

Permite representar categorías con barras de diferente altura según su frecuencia o valor.

ggplot(penguins)+
  geom_bar(aes(x= species, y= penguins$body_mass_g, fill = species), stat = "identity")

Histogramas

Los histogramas nos permiten representar frecuencias en nuestros datos. También son una forma de aproximación estadística para evaluar la normalidad, por ejemplo.

ggplot(penguins)+
  geom_histogram(aes(x= flipper_length_mm, fill = species), position = "identity")

Ejercicio práctico No. 2

Prueba a crear alguno de los gráficos que hemos visto con ambos datasets utilizados. Tienes 10 minutos.

Polígonos

Son similares a un histograma, sin embargo se diferencia en la unión de puntos de frecuencia con líneas formando un polígono. Puede ser util para representar la distribución espacial de varias especie por ejemplo.

library(ggplot2)
library(dplyr)
# Datos simulados de especies de escorpiones
set.seed(42)
scorpions <- data.frame(
  species = rep(c("Escorpión A", "Escorpión B"), each = 10),
  x = c(runif(10, min = 1, max = 5), runif(10, min = 4, max = 8)),
  y = c(runif(10, min = 1, max = 5), runif(10, min = 4, max = 8))
)

# Ordenar puntos para formar un polígono convexo
scorpions_hull <- scorpions %>%
  group_by(species) %>%
  slice(chull(x, y))  # Encuentra el polígono convexo

y así quedaría nuestro polígono…

# Graficar puntos y polígono
ggplot() +
  geom_polygon(data = scorpions_hull, aes(x = x, y = y, fill = species, group = species), alpha = 0.3) +
  geom_point(data = scorpions, aes(x = x, y = y, color = species), size = 3) +
  labs(title = "Espacio ecológico de escorpiones", x = "Eje PCA 1", y = "Eje PCA 2") +
  theme_minimal()

Otro ejemplo para un polígono sería

#Por ejemplo con penguins. 
ggplot(penguins)+
  geom_polygon(aes(x= penguins$body_mass_g, y=penguins$flipper_length_mm, fill= species), stat = "identity", position = "identity")+
  labs(x= "Masa cuerpo pinguinos", y= "Longitud de la aleta", title = "Relación entre la longitud ", subtitle = "Subtitulos")

Muchas gracias

Referencias

“About to ggplot 3.5.1 - CRAN (2025)