Librería

ggforce

Autor principal

Thomas Lin Pedersen

Datos de muestra

ggforce es una extension de ggplot2 creada por Thomas Lin Pedersen, el mantenedor actual de ggplot2. Anade nuevas geoms, estadisticas y facetas que complementan el paquete base. Usamos el dataset iris a lo largo del post.

# install.packages("ggforce")
library(ggplot2)
library(ggforce)

head(iris, 6)

geom_sina()

geom_sina() es una variacion del jitter que restringe los puntos dentro de la forma del violin, combinando la informacion de densidad del violin con los puntos individuales del jitter. Superponlo sobre geom_violin() para tener una vision completa de la distribucion.

# install.packages("ggforce")
library(ggplot2)
library(ggforce)

ggplot(iris, aes(x = Species,
                 y = Sepal.Length,
                 color = Species)) +
  geom_violin(alpha = 0.2) +
  geom_sina() +
  theme_minimal()

Grafico sina con ggforce geom_sina en R

geom_mark_ellipse()

Marcar grupos con elipses usando ggforce geom_mark_ellipse en R

geom_mark_ellipse() dibuja una elipse alrededor de cada grupo. Mapea label y opcionalmente description dentro de aes() para anadir anotaciones con descripcion. Controla el tamano del texto con label.fontsize y el espacio interior con expand.

# install.packages("ggforce")
library(ggplot2)
library(ggforce)

ggplot(iris, aes(x = Sepal.Length,
                 y = Sepal.Width,
                 color = Species)) +
  geom_point() +
  geom_mark_ellipse(
    aes(fill = Species, label = Species,
        description = desc),
    alpha = 0.15, label.fontsize = 9) +
  theme_minimal() +
  theme(legend.position = "none")

geom_mark_hull()

geom_mark_hull() dibuja un hull concavo que se ajusta al contorno de los puntos del grupo. El argumento concavity controla el ajuste: valores bajos producen un contorno mas concavo, valores altos tienden hacia un hull convexo.

# install.packages("ggforce")
library(ggplot2)
library(ggforce)

ggplot(iris, aes(x = Sepal.Length,
                 y = Sepal.Width,
                 color = Species)) +
  geom_point() +
  geom_mark_hull(
    aes(fill = Species, label = Species),
    alpha = 0.15, concavity = 2) +
  theme_minimal() +
  theme(legend.position = "none")

Marcar grupos con hull concavo usando ggforce geom_mark_hull en R

geom_mark_rect()

Marcar grupos con rectangulos usando ggforce geom_mark_rect en R

geom_mark_rect() dibuja el rectangulo delimitador minimo alineado con los ejes alrededor de cada grupo. Es el mas compacto de los tres mark geoms y funciona bien cuando los grupos tienen una forma aproximadamente rectangular. Acepta los mismos argumentos de label, description y estilo que los otros mark geoms.

# install.packages("ggforce")
library(ggplot2)
library(ggforce)

ggplot(iris, aes(x = Sepal.Length,
                 y = Sepal.Width,
                 color = Species)) +
  geom_point() +
  geom_mark_rect(
    aes(fill  = Species,
        label = Species),
    alpha = 0.15) +
  theme_minimal() +
  theme(legend.position = "none")

geom_parallel_sets()

geom_parallel_sets() dibuja un diagrama tipo Sankey que muestra como se distribuyen las observaciones entre varias variables categoricas. Primero transforma los datos con gather_set_data(), luego usa tres geoms: geom_parallel_sets() para las cintas, geom_parallel_sets_axes() para las barras de eje y geom_parallel_sets_labels() para las etiquetas.

# install.packages("ggforce")
library(ggplot2)
library(ggforce)

df_long <- gather_set_data(
  iris[, c("Species", "Sepal.Size")], 1:2)

ggplot(df_long, aes(x = x, id = id,
                    split = y, value = 1)) +
  geom_parallel_sets(aes(fill = Species), alpha = 0.4) +
  geom_parallel_sets_axes(axis.width = 0.1) +
  geom_parallel_sets_labels(colour = "white") +
  theme_void()

Diagrama de conjuntos paralelos con ggforce geom_parallel_sets en R

facet_wrap_paginate()

Facetas paginadas con ggforce facet_wrap_paginate en R

facet_wrap_paginate() funciona como facet_wrap() pero distribuye los paneles en paginas. Define la cuadricula con ncol y nrow, y cambia page para renderizar un subconjunto diferente. Usa n_pages() con la misma llamada para saber el total de paginas disponibles.

# install.packages("ggforce")
library(ggplot2)
library(ggforce)

ggplot(diamonds, aes(x = carat, y = price)) +
  geom_point(alpha = 0.3, size = 0.3) +
  facet_wrap_paginate(~ cut,
                      ncol = 2, nrow = 2,
                      page = 1) +
  theme_minimal()
MASTER - STATISTICS DOT COM

Master Statistics

Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad

Ir al sitio
R PACKAGES IO

R Packages

Explora y descubre miles de paquetes, funciones y datasets de R

Ir al sitio

También te puede interesar