ggplot2 proporciona varias funciones, llamadas escalas de color, para personalizar los colores de tus gráficos. En esta guía aprenderás a utilizarlas. Si buscas un color concreto puedes consultar la lista completa de colores en R con sus códigos HEX o elegir una de las 497 paletas de colores en R listas para usar.

Colores por defecto de ggplot2

Cuando pasas una variable categórica a color o a fill ggplot2 utiliza tonos equiespaciados de la rueda de color HCL. Estos colores se generan con la función hue_pal del paquete scales, por lo que puedes obtener los códigos HEX de los colores por defecto de ggplot2 para cualquier número de grupos. Haz clic en un color para copiar su código HEX.

# Colores por defecto de ggplot2 para 4 grupos
scales::hue_pal()(4)
n = 2
#F8766D
#00BFC4
n = 3
#F8766D
#00BA38
#619CFF
n = 4
#F8766D
#7CAE00
#00BFC4
#C77CFF
n = 5
#F8766D
#A3A500
#00BF7D
#00B0F6
#E76BF3
n = 6
#F8766D
#B79F00
#00BA38
#00BFC4
#619CFF
#F564E3
n = 7
#F8766D
#C49A00
#53B400
#00C094
#00B6EB
#A58AFF
#FB61D7
n = 8
#F8766D
#CD9600
#7CAE00
#00BE67
#00BFC4
#00A9FF
#C77CFF
#FF61CC

color vs fill

ggplot2 tiene dos argumentos para establecer los colores y elegir el correcto es la confusión más habitual. color (o colour) cambia el color de los puntos, las líneas y los bordes, mientras que fill cambia el color del interior de las formas, como las barras, las áreas, los box plots o las celdas de un mapa de calor.

color

Usa color para los puntos y las líneas, como en un gráfico de dispersión por grupo.

ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
  geom_point()

Cambiar el color de los puntos por grupo en ggplot2

Cambiar el color de relleno de las barras por grupo en ggplot2

fill

Usa fill para las formas con área, como las barras de un gráfico de barras.

ggplot(df, aes(x = group, y = value, fill = group)) +
  geom_col()

Ten en cuenta que si estableces el argumento dentro de aes los colores dependerán de una variable y se creará una leyenda, mientras que si lo estableces fuera de aes asignarás el mismo color a todos los elementos.

El mismo color para todos los elementos

Si quieres que todos los elementos tengan el mismo color pasa un color al argumento color o fill del geom, fuera de aes. Puedes usar el nombre de un color, como "steelblue", o su código HEX. Consulta la lista de colores en R para elegir uno.

ggplot(df, aes(x = group, y = value)) +
  geom_col(fill = "steelblue", color = "black")

Establecer el mismo color para todas las barras en ggplot2

Colores personalizados con scale_color_manual y scale_fill_manual

Las funciones scale_color_manual y scale_fill_manual permiten elegir tus propios colores para cada grupo. Tendrás que pasar un vector al argumento values con tantos colores como grupos. Usa scale_color_manual cuando la variable esté asignada a color y scale_fill_manual cuando esté asignada a fill.

Vector de colores

Los colores se asignan a los grupos en el mismo orden que los niveles de la variable categórica.

ggplot(df, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_manual(values = c("#264653", "#2A9D8F", "#E9C46A", "#E76F51"))

Colores personalizados en ggplot2 con scale_fill_manual

Asignar colores a los grupos con un vector con nombres en scale_color_manual

Vector con nombres

Si quieres asignar un color concreto a cada grupo usa un vector con nombres, donde los nombres son los grupos. Esto es muy útil para resaltar algunos grupos o para mantener el mismo color para cada grupo en distintos gráficos.

ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
  geom_point() +
  scale_color_manual(values = c(setosa = "#E76F51",
                                versicolor = "grey60",
                                virginica = "#2A9D8F"))

Ten en cuenta que también puedes cambiar las etiquetas y el título de la leyenda con los argumentos labels y name de estas funciones. Consulta la guía sobre leyendas en ggplot2 para más detalles.

Paletas de RColorBrewer

Las funciones scale_color_brewer y scale_fill_brewer proporcionan las paletas del paquete RColorBrewer, diseñadas para ser fáciles de leer. Pasa el nombre de la paleta al argumento palette.

Elige una paleta

Estas son las paletas cualitativas, recomendadas para datos categóricos. Ten en cuenta que cada paleta tiene un número máximo de colores (entre 8 y 12). Ejecuta RColorBrewer::display.brewer.all() para ver todas las paletas disponibles, incluidas las secuenciales y las divergentes.

Paletas de RColorBrewer en ggplot2 con scale_fill_brewer

ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_brewer(palette = "Set1")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_brewer(palette = "Set2")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_brewer(palette = "Set3")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_brewer(palette = "Dark2")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_brewer(palette = "Paired")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_brewer(palette = "Pastel1")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_brewer(palette = "Pastel2")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_brewer(palette = "Accent")

Paletas viridis

Las paletas viridis son perceptualmente uniformes y aptas para daltónicos, y además se ven bien impresas en escala de grises. Para datos categóricos usa scale_color_viridis_d o scale_fill_viridis_d y elige la paleta con el argumento option.

Elige una paleta

Ten en cuenta que puedes pasar el nombre de la paleta o su letra, desde "A" (magma) hasta "H" (turbo). La opción por defecto es "viridis" ("D").

Paletas de colores viridis en ggplot2 con scale_fill_viridis_d

ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_viridis_d(option = "viridis")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_viridis_d(option = "magma")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_viridis_d(option = "inferno")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_viridis_d(option = "plasma")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_viridis_d(option = "cividis")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_viridis_d(option = "rocket")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_viridis_d(option = "mako")
ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_viridis_d(option = "turbo")

Otras paletas de colores

Existen muchos paquetes que proporcionan paletas de colores, como ggsci, wesanderson o MetBrewer. El paquete paletteer reúne la mayoría de ellas y proporciona las funciones scale_color_paletteer_d y scale_fill_paletteer_d, de modo que puedes usar cualquier paleta pasando su nombre con el formato "paquete::paleta". Consulta la colección de paletas de colores en R para encontrar la que más te guste y copiar su nombre.

# install.packages("paletteer")
library(paletteer)

ggplot(df6, aes(x = group, y = value, fill = group)) +
  geom_col() +
  scale_fill_paletteer_d("nationalparkcolors::Arches")

Usar cualquier paleta de colores de R en ggplot2 con el paquete paletteer

Colores degradados para variables continuas

Cuando pasas una variable numérica a color o a fill ggplot2 crea una escala de color continua, que por defecto es un degradado de azules. En esta sección utilizamos el conjunto de datos mtcars, coloreando los puntos en base a la potencia (hp) de cada coche.

scale_color_gradient

Establece los colores para los valores más bajos y más altos con los argumentos low y high.

ggplot(mtcars, aes(x = wt, y = mpg, color = hp)) +
  geom_point(size = 3) +
  scale_color_gradient(low = "#FFE5B4", high = "#B22222")

Colores degradados en ggplot2 con scale_color_gradient

Degradado divergente en ggplot2 con scale_color_gradient2

scale_color_gradient2

Si necesitas un degradado divergente usa scale_color_gradient2, que además incluye el color mid y el argumento midpoint para establecer el valor del centro de la escala.

ggplot(mtcars, aes(x = wt, y = mpg, color = hp)) +
  geom_point(size = 3) +
  scale_color_gradient2(low = "#2166AC", mid = "grey90", high = "#B2182B",
                        midpoint = 150)

scale_color_gradientn

Con scale_color_gradientn puedes crear un degradado con cualquier número de colores, pasando un vector al argumento colors. En este ejemplo utilizamos cinco colores de la paleta "Zissou 1" con la función hcl.colors.

ggplot(mtcars, aes(x = wt, y = mpg, color = hp)) +
  geom_point(size = 3) +
  scale_color_gradientn(colors = hcl.colors(5, "Zissou 1"))

Degradado con varios colores en ggplot2 con scale_color_gradientn

Escala de color viridis continua en ggplot2

Degradados viridis y RColorBrewer

Las paletas viridis y RColorBrewer también están disponibles para variables continuas con scale_color_viridis_c y scale_color_distiller, respectivamente.

ggplot(mtcars, aes(x = wt, y = mpg, color = hp)) +
  geom_point(size = 3) +
  scale_color_viridis_c(option = "plasma")
# scale_color_distiller(palette = "Spectral")

Escalas de color por intervalos

En lugar de un degradado continuo puedes dividir la variable numérica en intervalos, cada uno con un color diferente, con scale_color_steps (dos colores), scale_color_steps2 (divergente) o scale_color_stepsn (cualquier número de colores). El argumento n.breaks controla el número de intervalos.

ggplot(mtcars, aes(x = wt, y = mpg, color = hp)) +
  geom_point(size = 3) +
  scale_color_steps(low = "#FFE5B4", high = "#B22222",
                    n.breaks = 6)

Escala de color por intervalos en ggplot2 con scale_color_steps

Transparencia

Cambiar la transparencia de los colores en ggplot2 con alpha

El argumento alpha de los geoms controla la transparencia de los colores, desde 0 (totalmente transparente) hasta 1 (opaco). Esto es muy útil para evitar que los puntos se solapen cuando hay muchas observaciones.

ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
  geom_point(size = 4, alpha = 0.4)

Cambiar los colores por defecto de todos los gráficos

Si siempre utilizas los mismos colores puedes cambiar las escalas de color por defecto de ggplot2 para la sesión actual con las opciones ggplot2.discrete.colour, ggplot2.discrete.fill, ggplot2.continuous.colour y ggplot2.continuous.fill. Todos los gráficos que crees después de establecer estas opciones utilizarán los nuevos colores.

options(ggplot2.discrete.colour = c("#264653", "#2A9D8F", "#E9C46A", "#E76F51"),
        ggplot2.discrete.fill = c("#264653", "#2A9D8F", "#E9C46A", "#E76F51"),
        ggplot2.continuous.colour = "viridis",
        ggplot2.continuous.fill = "viridis")
MASTER - STATISTICS DOT COM

Master Statistics

Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad

Ir al sitio
R PACKAGES IO

R Packages

Explora y descubre miles de paquetes, funciones y datasets de R

Ir al sitio

También te puede interesar