change - cambiando los colores del factor ggplot?
ggtitle size (2)
Noto que aquí Box and whiskers trazan la llamada:
p + geom_boxplot(aes(fill = factor(cyl)))
genera colores rojos / verdes / azules brillantes para el relleno de las gráficas de caja, mientras:
p + geom_boxplot(aes(fill = factor(vs)))
Genera un claro color verde pálido / rojo de colores. En mis datos, obtengo el segundo conjunto de colores, pero me gustaría el primer conjunto (como en
p + geom_boxplot(aes(fill = factor(cyl)))
¿Qué controla qué conjunto de colores usa ggplot y cómo puedes cambiarlo?
Gracias
Los colores predeterminados son tonos uniformemente espaciados alrededor de la rueda de colores. Puede verificar cómo se genera esto desde here .
Puedes usar scale_fill_manual
con esos colores:
p + scale_fill_manual(values=c("#F8766D", "#00BA38"))
Aquí, utilicé ggplot_build(p)$data
de cyl
para obtener los colores.
Alternativamente, puede usar otra paleta y así:
p + scale_fill_brewer(palette="Set1")
Y para encontrar los colores en la paleta, puedes hacer:
require(RColorBrewer)
brewer.pal(9, "Set1")
Consulte el paquete para conocer las paletas y otras opciones, si está interesado.
Edit: @ user248237dfsf, como ya señalé en el enlace de arriba, esta función de @Andrie muestra los colores generados:
ggplotColours <- function(n=6, h=c(0, 360) +15){
if ((diff(h)%%360) < 1) h[2] <- h[2] - 360/n
hcl(h = (seq(h[1], h[2], length = n)), c = 100, l = 65)
}
> ggplotColours(2)
# [1] "#F8766D" "#00BFC4"
> ggplotColours(3)
# [1] "#F8766D" "#00BA38" "#619CFF"
Si miras los dos colores generados, el primero es el mismo, pero el segundo color no es el mismo, cuando n = 2 y n = 3. Esto se debe a que genera colores de tonalidades uniformemente espaciadas . Si desea usar los colores para cyl
para vs
entonces deberá establecer scale_fill_manual
y usar estos colores generados con n = 3 desde esta función.
Para verificar que esto es realmente lo que está sucediendo, podrías hacer:
p1 <- ggplot(mtcars, aes(factor(cyl), mpg)) +
geom_boxplot(aes(fill = factor(cyl)))
p2 <- ggplot(mtcars, aes(factor(cyl), mpg)) +
geom_boxplot(aes(fill = factor(vs)))
Ahora, si lo haces:
ggplot_build(p1)$data[[1]]$fill
# [1] "#F8766D" "#00BA38" "#619CFF"
ggplot_build(p2)$data[[1]]$fill
# [1] "#F8766D" "#00BFC4" "#F8766D" "#00BFC4" "#F8766D"
Verá que estos son los colores que se generan con ggplotColours
y la razón de la diferencia también es obvia. Espero que esto ayude.