library(ggplot2)
theme_set(theme_elartedeldato())
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.
$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)) +
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.
+ geom_point(color = "orange") p
Por otro lado, en caso de que el color dependa de una variable, lo indicaremos dentro de la función aes()
.
+ geom_point(aes(color = vore)) -> p
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:
+ scale_color_brewer(palette = "Set2") p
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)
+ scale_color_carto_d(palette = "Pastel", na.value = "#111111") p
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.
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.
<- c("#fffb00","#aedcc0", "#206999", "#ffab44", "#1b314b")
elartedeldato_colores
+ scale_color_manual(values = elartedeldato_colores) p
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
.
geom_point(color = "orange")
para cambiar el color de todos los puntos de gráficoscale_color_brewer()
para modificar una paleta de colores de Color Brewerscale_color_carto_c()/_d()
para elegir una paleta de colores de Carto Colorscale_color_manual()
para indicar manualmente los coloresscale_color_gradient()
para indicar manualmente los colores en caso continuo