Color

Una de las características más destacables de un gráfico y que primero llama la atención es el color. En este capítulo trabajaremos con las funciones que nos permiten modificar el color en un gráfico de ggplot en R.

Cómo modificar el color de un gráfico de ggplot

Primero, partimos del gráfico base con el que venimos trabajando hasta ahora y cargamos el plot base. Si no recuerdas cómo fijar un tema puedes volver a leer la sección sobre cómo personalizar un tema en ggplot.

library(ggplot2)

theme_set(theme_elartedeldato())
msleep$vore <- as.factor(msleep$vore)
levels(msleep$vore) <- c("carnívoro", "herbívoro", "insectívoro", "omnívoro")

ggplot(msleep, aes(x = sleep_total, y = sleep_rem)) +
  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. elartedeldato.com",
    x = "Horas de sueño en total", y = "Horas de sueño en fase REM"
  ) +
  facet_wrap("vore") -> p
p

Para modificar el color de los puntos del gráfico utilizaremos color = ... dentro de la capa de geometría, en este caso, geom_point(). El valor del atributo color será el nuevo color de todos los puntos del gráfico.

La forma de especificarlo puede ser el nombre del color o su valor en hexadecimal.

p + geom_point(color = "orange")

Por otro lado, en caso de que el color dependa de una variable, lo indicaremos dentro de la función aes().

p + geom_point(aes(color = vore)) -> p
p

Ahora bien, ¿cómo podríamos modificar la paleta de colores? Existen dos posibilidades: Una, que la paleta sea predeterminada o bien, que la paleta sea definida manualmente. A continuación, veremos cada caso detalladamente.

Cómo añadir una paleta de colores predeterminada

Antes de añadir una paleta de colores, nos preguntaremos qué tipo de paleta necesitamos. Existen tres tipos diferentes: divergente, cualitativa o secuencial. En el post sobre las 7 librerías de colores de R que deberías conocer hablamos sobre todas ellas. Principalmente estas son las características de cada una:

  • La paleta cualitativa se emplea para datos categóricos sin ordenación

  • La paleta secuencial para información numérica continua o categórica ordenada

  • La escala divergente para variables numéricas que, desde un valor neutro, divergen hacia dos extremos

En este caso, elegimos una paleta cualitativa puesto que la variable clasificación según alimentación es categórica.

Posteriormente, vamos a ver cuál de las librerías nos conviene más usar. Ggplot, por defecto, ofrece las disponibles en Color Brewer, pero ya sabemos que existen muchas otras opciones.

Para visualizar las paletas disponibles lo podemos hacer de la siguiente manera:

library(RColorBrewer)

display.brewer.all()

Elegimos la paleta Set2 y lo indicamos así en ggplot:

p + scale_color_brewer(palette = "Set2")

Ten en cuenta que si en vez de trabajar con el color, modificásemos el relleno o fill, la función equivalente sería scale_fill_brewer().

Si preferimos trabajar con otra de las librerías mencionadas en el post anteriormente citado, simplemente necesitaríamos cambiar brewer por el nombre de la nueva librería. Por ejemplo, para utilizar la librería de Carto scale_color_carto_c() o scale_color_carto_d(), dependiendo si la variable es continua o discreta respectivamente.

library(rcartocolor)

p + scale_color_carto_d(palette = "Pastel", na.value = "#111111")

Nota

Hemos especificado en este caso el color para los valores NA ya que el color por defecto que proporciona la libraría rcartocolor es demasiado similar al fondo del gráfico.

Cómo añadir una paleta de colores manualmente

Para añadir la paleta de colores manualmente utilizamos scale_color_manual(). El argumento values nos permitirá indicar cuáles son los valores concretos que queremos asociar a la variable.

Advertencia

Recordemos que debemos indicar el mismo número de colores que de categorías de la variable. Podemos indicar más colores que categorías, pero no viceversa, ya que saltara un error del siguiente tipo:

  Error in `palette()`:
  ! Insufficient values in manual scale. 4 needed but only 2 provided.
elartedeldato_colores <- c("#fffb00","#aedcc0", "#206999", "#ffab44", "#1b314b")

p + scale_color_manual(values = elartedeldato_colores)

En caso de una variable continua, utilizaríamos scale_color_gradient(), indicamos el mínimo, con el argumento low y el máximo con el argumento high.

En resumen…
  • geom_point(color = "orange") para cambiar el color de todos los puntos de gráfico

  • scale_color_brewer() para modificar una paleta de colores de Color Brewer

  • scale_color_carto_c()/_d() para elegir una paleta de colores de Carto Color

  • scale_color_manual() para indicar manualmente los colores

  • scale_color_gradient() para indicar manualmente los colores en caso continuo