ggforce es una extensión de ggplot2 creada por Thomas Lin Pedersen, el mantenedor actual de ggplot2. Añade nuevas geoms, estadísticas 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 variación del jitter que restringe los puntos dentro de la forma del violín, combinando la información de densidad del violín con los puntos individuales del jitter. Superponlo sobre geom_violin() para tener una visión completa de la distribución.
# 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()

geom_mark_ellipse()

geom_mark_ellipse() dibuja una elipse alrededor de cada grupo. Mapea label y opcionalmente description dentro de aes() para añadir anotaciones con descripción. Controla el tamaño 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 cóncavo que se ajusta al contorno de los puntos del grupo. El argumento concavity controla el ajuste: valores bajos producen un contorno más cóncavo, 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")

geom_mark_rect()

geom_mark_rect() dibuja el rectángulo delimitador mínimo alineado con los ejes alrededor de cada grupo. Es el más 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 cómo se distribuyen las observaciones entre varias variables categóricas. 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()

facet_wrap_paginate()

facet_wrap_paginate() funciona como facet_wrap() pero distribuye los paneles en páginas. Define la cuadrícula con ncol y nrow, y cambia page para renderizar un subconjunto diferente. Usa n_pages() con la misma llamada para saber el total de páginas 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()
Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad
Ir al sitio
También te puede interesar