Librería

patchwork

Autor principal

Thomas Lin Pedersen

Gráficos de muestra

Los cuatro gráficos siguientes se usarán a lo largo de este tutorial. Guárdalos como objetos para que patchwork pueda combinarlos.

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

set.seed(5)
x <- runif(100)
df <- data.frame(x = seq_along(x), y = x)

p1 <- ggplot(df, aes(x = "", y = y)) +
  geom_boxplot()

p2 <- ggplot(df, aes(y = y)) +
  geom_histogram(bins = 15)

p3 <- ggplot(df, aes(x = x, y = y)) +
  geom_line()

p4 <- ggplot(df, aes(x = x, y = y)) +
  geom_point()

Cuatro gráficos de ggplot2 de muestra

Operadores

Carga patchwork y usa el operador + para colocar gráficos en fila. Con dos gráficos el resultado es idéntico a |, pero con más gráficos + intenta crear un diseño cuadrado.

# install.packages("patchwork")
library(patchwork)

p1 + p2

Combinar dos gráficos de ggplot2 en fila con patchwork

Colocar gráficos en una sola fila con el operador pipe en patchwork

| fuerza una sola fila, independientemente del número de gráficos.

# install.packages("patchwork")
library(patchwork)

p1 | p2 | p3

/ apila los gráficos en una sola columna.

# install.packages("patchwork")
library(patchwork)

p1 / p2

Apilar gráficos de ggplot2 con el operador slash en patchwork

Anidamiento de operadores

Los operadores se pueden anidar con paréntesis para crear diseños complejos sin necesidad de ninguna función adicional.

# install.packages("patchwork")
library(patchwork)

(p1 | p2) / p3

Anidar operadores de patchwork para crear layouts complejos en ggplot2

Un gráfico a la izquierda y dos a la derecha con patchwork

Un gráfico a la izquierda, dos apilados a la derecha.

# install.packages("patchwork")
library(patchwork)

p1 | (p2 / p3)

plot_layout()

plot_layout() controla el número de filas y columnas, y el tamaño relativo de cada gráfico con widths y heights.

# install.packages("patchwork")
library(patchwork)

p1 + p2 + p3 + p4 +
  plot_layout(ncol = 3, widths = c(1, 1, 2))

Controlar columnas y anchos relativos con plot_layout en patchwork

Diseño personalizado

Pasa una cadena de texto a design donde cada carácter es un número de gráfico y # es un espacio vacío. Esto te da control total sobre el diseño.

# install.packages("patchwork")
library(patchwork)

design <- "
  111
  2#3
  443
"

p1 + p2 + p3 + p4 +
  plot_layout(design = design)

Cadena de diseño personalizado en patchwork

Leyenda compartida

Cuando los gráficos comparten la misma leyenda, pasa guides = "collect" a plot_layout() para fusionarlas en una sola leyenda para toda la figura.

# install.packages("patchwork")
library(patchwork)

set.seed(1)
df2 <- data.frame(x = 1:50, y = rnorm(50),
                  g = rep(c("A", "B"), 25))

pa <- ggplot(df2, aes(x, y, color = g)) + geom_point()
pb <- ggplot(df2, aes(x, y, color = g)) + geom_line()

pa + pb +
  plot_layout(guides = "collect")

Leyenda compartida para gráficos combinados con guides collect en patchwork

Mover la leyenda compartida a la parte inferior de los gráficos combinados

Cambiar la posición de la leyenda

Usa el operador & para aplicar theme() a todos los gráficos a la vez. Esto permite mover la leyenda recogida a cualquier lado.

# install.packages("patchwork")
library(patchwork)

set.seed(1)
df2 <- data.frame(x = 1:50, y = rnorm(50),
                  g = rep(c("A", "B"), 25))

pa <- ggplot(df2, aes(x, y, color = g)) + geom_point()
pb <- ggplot(df2, aes(x, y, color = g)) + geom_line()

pa + pb +
  plot_layout(guides = "collect") &
  theme(legend.position = "bottom")

plot_annotation()

Añade un título, subtítulo y pie de figura para toda la figura con plot_annotation().

# install.packages("patchwork")
library(patchwork)

p1 + p2 +
  plot_annotation(
    title = "Título de la figura",
    subtitle = "Subtítulo",
    caption = "Nota")

Añadir título a gráficos combinados con plot_annotation en patchwork

Etiquetar cada gráfico automáticamente con tag_levels en patchwork

Etiquetas automáticas

tag_levels añade una etiqueta a cada panel automáticamente. Las opciones son "1", "a", "A", "i" o "I" para números romanos.

# install.packages("patchwork")
library(patchwork)

p1 + p2 + p3 +
  plot_annotation(tag_levels = "A")

Operador &

El operador & aplica una capa a todos los gráficos a la vez. Úsalo para establecer el mismo tema, escala de color o cualquier otra capa en toda la figura.

# install.packages("patchwork")
library(patchwork)

p1 + p2 + p3 + p4 & theme_minimal()

Aplicar el mismo tema a todos los gráficos a la vez con el operador & en patchwork

inset_element()

inset_element() coloca un gráfico encima de otro en cualquier posición. Los argumentos left, bottom, right y top definen la ubicación como fracciones del área del gráfico principal (de 0 a 1).

# install.packages("patchwork")
library(patchwork)

p3 + inset_element(p1,
                   left = 0.6,
                   bottom = 0.6,
                   right = 1,
                   top = 1)

Insertar un gráfico de ggplot2 dentro de otro con inset_element de patchwork

Inset alineado al área del panel con align_to en patchwork

align_to

Por defecto las coordenadas son relativas al área total del gráfico incluyendo márgenes. Usa align_to = "panel" para posicionar el inset respecto al área interior del panel.

# install.packages("patchwork")
library(patchwork)

p3 + inset_element(p1,
                   left = 0,
                   bottom = 0.55,
                   right = 0.4,
                   top = 1,
                   align_to = "panel")
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