Apparemment, une chose très simple à faire, mais cela m'a pris> 30 minutes sans trouver de réponse.
Comment inverser l'ordre des couleurs? En regardant documentation pour scale_brewer , je me suis dit que ça pouvait être formatter=
argument suspect. J'ai réussi 'rev'
puis rev
, mais ils n'ont aucun effet (pas de message d'erreur, juste ignoré).
Je pense que vous souhaitez probablement sélectionner les couleurs à l'aide de brewer.pal
directement, puis utilisez scale_colour_manual
:
ggplot(mtcars,aes(x = mpg, y = disp)) +
geom_point(aes(colour = factor(cyl))) +
scale_colour_manual(values = rev(brewer.pal(3,"BuPu")))
Ensuite, vous pouvez rev
l'ordre des couleurs là-bas.
Depuis la version 2.0,0 de ggplot, il existe désormais un moyen plus direct de le faire, voir la réponse de @pbaylis ci-dessous.
La version CRAN de ggplot2 permet désormais aux utilisateurs de spécifier direction=-1
in scale_brewer pour inverser les couleurs. Ce qui suit produit le même tracé que la réponse acceptée.
ggplot(mtcars,aes(x = mpg, y = disp)) +
geom_point(aes(colour = factor(cyl))) +
scale_colour_brewer(palette="BuPu", direction=-1)
Cela n'aidera pas le problème du PO - je sais. Pour des échelles discrètes comme scale_..._brewer()
, faire scale_..._manual(values = rev(colorsYouHad))
est la bonne réponse.
Néanmoins, pour les échelles continues, vous pouvez simplement passer:
scale_..._...(..., trans = "reverse")
par exemple, pour l'équivalent continu de scale_..._brewer()
:
scale_..._distiller("My Scale", palette = "Spectral", trans = "reverse")
Si vous ne voulez pas fouiner directement avec RColorBrewer
(un joli paquet), vous pouvez inverser les niveaux du facteur dans le data.frame d'origine, puis le tracer:
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
# Reverse the levels of the factor associated with color, here 'clarity'
# (Might be safer to assign this to a new column named, e.g., 'clarity2')
levels(dsamp$clarity) <- rev(levels(dsamp$clarity))
d <- qplot(carat, price, data = dsamp, colour = clarity)
d + scale_colour_brewer(breaks = levels(dsamp$clarity))
Et si vous souhaitez imprimer la clé dans le même ordre qu'avant l'inversion, procédez comme suit:
d + scale_colour_brewer(breaks = rev(levels(dsamp$clarity)))
Je sais, très tard pour la fête. Mais j'ai rencontré ce problème il y a quelque temps et j'ai utilisé la solution ci-dessus. Je suis actuellement en train de passer par r4ds par Hadley Wickham et il y a une solution ridiculement facile, alors j'ai pensé la publier. Change ça:
ggplot(mtcars,aes(x = mpg, y = disp)) +
geom_point(aes(colour = factor(cyl)))
pour ça:
ggplot(mtcars,aes(x = mpg, y = disp)) +
geom_point(aes(colour = factor(-cyl))) #note the minus symbol