ggtitle ggplot change r ggplot2 visualization

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


Agregar a respuestas anteriores:

Cuando use la estética col (en lugar de fill ), use scale_color_manual . Esto es útil para geom_point() :

myColors <- c("#56ddc5", "#ff3db7", "#4699dd") ggplot(mtcars, aes(x=mpg, y=hp, col=as.factor(cyl))) + geom_point() + scale_color_manual(values=myColors)


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.