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.
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)
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()


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.
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")

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"))


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.
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.

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")
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").

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")
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")

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")


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"))


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")
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)


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)
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")
Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad
Ir al sitio
También te puede interesar