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()

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


| 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

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


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))

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)

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")


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")


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")
&
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()

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)


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")
Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad
Ir al sitio
También te puede interesar