library(ggplot2)
theme_set(theme_elartedeldato())
Márgenes
En ocasiones, el orden por defecto de los elementos dentro de un gráfico no es el que más nos conviene. Puede que por la naturaleza de los datos, o bien por el contexto de la información que queremos presentar, nos interese añadir más espacio dentro entre el título y el panel principal, o quizás menos margen en los laterales, para centrar mejor el foco de atención. Sobre esto hablaremos en esta sección, cómo modificar los márgenes de un plot, incluidos los márgenes del título, subtítulo y pie de gráfico.
Antes de nada fijamos el tema con la función theme_set()
y cargamos el gráfico base. Si no te acuerdas cómo fijar un tema puedes volver a leer la sección sobre cómo personalizar un tema en ggplot.
$vore <- as.factor(msleep$vore)
msleeplevels(msleep$vore) <- c("carnívoro", "herbívoro", "insectívoro", "omnívoro")
ggplot(msleep, aes(x = sleep_total, y = sleep_rem, color = vore)) +
geom_point() +
labs(
title = "El sueño de los mamíferos",
subtitle = "Sueño REM frente a las horas totales de sueño",
caption = "Proceedings of the National Academy of Sciences, 104 (3):1051-1056, 2007",
x = "Horas de sueño en total", y = "Horas de sueño en fase REM"
+
) facet_wrap("vore") -> p
p
Cómo modificar los márgenes del gráfico
Principalmente, con el argumento plot.margin
junto con la función margin()
, podemos indicar exactamente los cm que deseamos añadir por cada uno de los lados de nuestro gráfico, empezando por el margen superior, y siguiendo el orden de las agujas del reloj (superior, derecho, inferior, izquierdo.
También es posible indicar los valores en puntos, pt, en vez de en cm.
+
p theme(plot.margin = margin(0, 2, 0, 2, "cm"))
Cómo añadir margen inferior a un título o subtítulo
En el caso del título, es común tratar de distanciarlo en mayor medida del resto de elementos, ya que en ggplot, por defecto, suele mostrarse muy cerca del panel principal del gráfico.
+
p theme(
plot.title = element_text(margin = margin(0, 0, 5, 0)),
plot.subtitle = element_text(margin = margin(0, 0, 35, 0))
)
En resumen…
theme(plot.margin = margin(...))
modifica los márgenes del plottheme(plot.title=element_text(margin=margin(...))
modifica los márgenes del títulotheme(plot.subtitle=element_text(margin=margin(...))
modifica los márgenes del subtítulotheme(plot.caption=element_text(margin=margin(...))
modifica los márgenes del pie de gráfico