I colori di default sono distribuiti uniformemente tonalità intorno alla ruota dei colori è possibile controllare come questo è generato da here
è possibile utilizzare scale_fill_manual
con quei colori:..
p + scale_fill_manual(values=c("#F8766D", "#00BA38"))
Qui, ho usato ggplot_build(p)$data
da cyl
per ottenere i colori.
In alternativa, è possibile utilizzare un altro tavolozza così in questo modo:
p + scale_fill_brewer(palette="Set1")
E per trovare i colori della tavolozza, si può fare:
require(RColorBrewer)
brewer.pal(9, "Set1")
Controllare il pacchetto per conoscere le palette e altre opzioni, se sei interessato.
Edit: @ user248237dfsf, come ho già fatto notare nel link in alto, questa funzione da @Andrie mostra i colori generati:
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"
Se si guardano i due colori generati , il primo è lo stesso, ma il secondo colore non è lo stesso, quando n = 2 en = 3. Questo perché genera colori di equamente distanziati di tonalità. Se si desidera utilizzare i colori per cyl
per vs
, sarà necessario impostare scale_fill_manual
e utilizzare questi colori generati con n = 3 da questa funzione.
per verificare che questo è proprio ciò che sta accadendo si potrebbe fare:
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)))
Ora, se si fa:
ggplot_build(p1)$data[[1]]$fill
# [1] "#F8766D" "#00BA38" "#619CFF"
ggplot_build(p2)$data[[1]]$fill
# [1] "#F8766D" "#00BFC4" "#F8766D" "#00BFC4" "#F8766D"
Si vede che questi sono i colori che vengono generati utilizzando ggplotColours
e la la ragione della differenza è anche ovvia. Spero che aiuti.
Ma questo non spiega il motivo per cui per una variabile tracciata come un fattore si ottiene un insieme di colori e per un diverso si ottiene un altro insieme di colori come nel pagina doc a cui mi sono collegato. I colori sono equamente distanziati, posso vederlo, ma perché è diverso tra i due? Voglio che assomigli al primo, non al secondo. – user248237dfsf
Sarebbe bello poter impostare manualmente i passaggi tra ciascun colore sulla ruota del colore. In questo modo potremmo ottenere un maggiore contrasto tra fattori consecutivi. Dopo 360 dovrebbe solo continuare da 0. – JohannesNE