39  Temas en ggplot2

Además de modificar las estéticas de los datos, como color, shape, size o alpha, también podemos modificar la apariencia general de la gráfica. Para eso usamos los temas.

Un tema controla elementos visuales que no dependen directamente de los datos, por ejemplo:

Primero guardamos una gráfica base.

Code
library(ggplot2)

p <- ggplot(
  data = penguins,
  aes(
    x = bill_len,
    y = bill_dep,
    color = species
  )
) +
  geom_point(size = 2, alpha = 0.7) +
  labs(
    title = "Relación entre longitud y profundidad del pico",
    x = "Longitud del pico (mm)",
    y = "Profundidad del pico (mm)",
    color = "Especie"
  )

39.1 Temas predefinidos

ggplot2 tiene varios temas predefinidos. Todos contienen la misma información, pero cambia la presentación visual.

Code
p + theme_gray()

Code
p + theme_light()

Code
p + theme_dark()

Code
p + theme_minimal()

Code
p + theme_void()

Code
p + theme_test()

Por ejemplo, theme_gray() es el tema por defecto de ggplot2, mientras que theme_minimal() elimina varios elementos visuales para dejar una gráfica más limpia. En cambio, theme_void() elimina casi todos los elementos del fondo, incluyendo ejes y cuadrícula.

NoteNota

Los temas no cambian los datos ni la relación entre variables. Sólo modifican la apariencia general de la gráfica.

39.2 Modificar elementos del tema

También podemos modificar elementos específicos con theme(). Por ejemplo, podemos cambiar el estilo del título, los títulos de los ejes y el texto de los ejes.

Code
p +
  theme_minimal() +
  theme(
    plot.title = element_text(
      color = "red",
      size = 12,
      face = "bold.italic"
    ),
    axis.title.x = element_text(
      color = "blue",
      size = 10,
      face = "bold"
    ),
    axis.title.y = element_text(
      color = "#993333",
      size = 10,
      face = "italic"
    ),
    axis.text = element_text(
      color = "slateblue2",
      size = 10
    )
  )

En este ejemplo usamos:

  • plot.title: para modificar el título de la gráfica.
  • axis.title.x: para modificar el título del eje x.
  • axis.title.y: para modificar el título del eje y.
  • axis.text: para modificar los valores que aparecen sobre los ejes.

La función element_text() permite modificar propiedades del texto, como el color, tamaño y estilo.

39.3 Combinar temas predefinidos con modificaciones propias

También podemos partir de un tema predefinido y después modificar algunos elementos particulares.

Code
p +
  theme_dark() +
  theme(
    plot.title = element_text(
      color = "red",
      size = 12,
      face = "bold.italic"
    ),
    axis.title.x = element_text(
      color = "blue",
      size = 10,
      face = "bold"
    ),
    axis.title.y = element_text(
      color = "#993333",
      size = 10,
      face = "italic"
    ),
    axis.text = element_text(
      color = "slateblue2",
      size = 10
    )
  )

Aquí primero aplicamos theme_dark() y después cambiamos algunos elementos del texto. Esto muestra que los temas se pueden usar como punto de partida y luego ajustar según nuestras necesidades.

39.4 Elementos de un tema

Una infografía que les puede ayudar a personalizar sus plots.

ggplot2 Theme Elements Reference Sheet

39.5 Temas propios

Hasta ahora hemos utilizado los temas predefinidos de ggplot2, como theme_light() o theme_minimal(). Sin embargo, también podemos construir nuestro propio tema combinando un tema existente con modificaciones realizadas mediante theme().

Por ejemplo, podemos definir un tema personalizado para todas nuestras gráficas:

Code
tema_pingüinos <- theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 14),
    axis.title = element_text(size = 12),
    legend.position = "bottom",
    panel.grid.minor = element_blank()
  )

Ahora podemos reutilizar este tema en cualquier figura:

Code
ggplot(
  penguins,
  aes(
    x = bill_len,
    y = bill_dep,
    color = species
  )
) +
  geom_point(alpha = 0.7) +
  labs(
    title = "Relación entre longitud y profundidad del pico",
    x = "Longitud del pico (mm)",
    y = "Profundidad del pico (mm)"
  ) +
  tema_pingüinos

De esta manera, podemos mantener una apariencia consistente en todas nuestras visualizaciones sin tener que repetir las mismas modificaciones en cada gráfico.

TipIdea importante

Un tema personalizado es simplemente un objeto que almacena modificaciones de estilo. Esto es especialmente útil cuando queremos que todas las figuras de un proyecto, artículo o presentación compartan una apariencia uniforme.