R: ggplot mieux dégradé de couleur
Je suis en utilisant ggplot de tracer Proportionnelle à barres Empilées parcelle. Et l'Intrigue, je suis à quelque chose comme ceci:
Et c'est le support de la fonction, je suis en utilisant:
df <- data.frame(id=letters[1:3],val0=1:3,val1=4:6,val2=7:9, val3=2:4, val4=1:3, val5=4:6, val6=10:12, val7=12:14)
PropBarPlot<-function(df, mytitle=""){
melteddf<-melt(df, id=names(df)[1], na.rm=T)
ggplot(melteddf, aes_string(x=names(df)[1], y="value", fill="variable")) +
geom_bar(position="fill") +
theme(axis.text.x = element_text(angle=90, vjust=1)) +
labs(title=mytitle)
}
print(PropBarPlot(df))
Ici val4
et val5
ne sont pas très différents.
Mais en raison des couleurs de certains d'entre eux ne sont pas distinguables. Quelqu'un peut me dire comment choisir les meilleures couleurs de sorte qu'ils sont dérivable?
Grâce.
- Pouvez-vous donner un exemple dataframe pour le rendre plus facile à tester le tracé? De toute façon, mon idée est d'avoir un coup d'oeil dans scale_colour_brewer de ggplot, qui vous permet d'utiliser des palettes à partir de colorbrewer2.org
- Ajouté. Ici essentiellement
val4
etval5
ne sont pas visiblement très différentes.
Vous devez vous connecter pour publier un commentaire.
Comment sur l'utilisation de
scale_fill_brewer
ce qui rend l'utilisation de palettes de couleurs à partir de laColorBrewer
site web, mis en œuvre par le paquetRColorBrewer
?Il y a un certain nombre de divergences de palettes vous pouvez choisir.
Si vous avez besoin de plus de couleurs, vous pouvez utiliser le
colorRampPalette
fonctionnalités pour interpoler entre certaines couleurs (et je voudrais utiliser unbrewer.pal
palette pour cela). Vous pouvez le faire comme ceci:Dans votre exemple, ce qui nécessite 8 couleurs vous l'utiliser comme ça avec
scale_fill_manual()
:D'emprunt du code de @SimonO101
Voir si cela fonctionne mieux pour vos besoins.
Merci @zelite et @SimonO101 pour votre aide. C'est la version plus simple de ce que les deux d'entre vous est proposé. L'ajout d'ici à l'exhaustivité.
Grâce.
J'utiliserais scale_fill_manual=c("red","green"), vous pouvez mettre plus de couleurs si vous le souhaitez
ou
scale_fill_brewer(palette="Rouges"), je l'aime. Vous pouvez utiliser des palettes ici