web-dev-qa-db-fra.com

La coloration manuelle des tracés avec `scale_fill_manual` dans ggplot2 ne fonctionne pas

Je n'arrive pas à modifier manuellement les couleurs des barres dans ggplot2. Étrangement, je peux le faire fonctionner lorsque j'utilise des formats plus compliqués qui nécessitent une légende en utilisant scale_fill_manual et en définissant values, labels, etc. Mais lorsque je crée un graphique plus simple qui ne nécessite pas de légende, je n'arrive pas à le faire fonctionner. Voici un exemple de bloc de données, les étapes que j'ai utilisées dans dplyr pour obtenir les pourcentages et comment je pense que cela devrait fonctionner dans ggplot2. Je veux juste changer manuellement les couleurs de la barre en rouge, vert de mer3 et gris.

Toute aide serait appréciée. Je suis également curieux de connaître les différentes méthodes utilisées pour calculer rapidement les pourcentages. J'ai utilisé le piping avec dplyr, mais ce serait génial de voir d'autres façons d'écrire du code.

library(dplyr)
library(ggplot2)

Service <- c("Satisfied", "Dissatisfied", "Neutral", "Satisfied", "Neutral")
Service2 <- c("Dissatisfied", "Dissatisfied", "Neutral", "Satisfied", "Satisfied")

Services <- data.frame(Service, Service2)

ServicesProp <- Services %>%
                select(Service) %>% group_by(Service) %>% 
                summarise(count=n()) %>%
                mutate(percent = count / sum(count))

ggplot(ServicesProp, aes(x = Service, y = percent)) + 
    geom_bar(stat = "identity", position = "dodge") + 
    scale_fill_manual(values = c("red", "seagreen3", "grey"))
8
Mike

Juste au cas où vous ne savez pas ce que signifie @baptise:

ggplot(ServicesProp, aes(x = Service, y = percent, fill = Service)) + 
  geom_bar(stat = "identity", position = "dodge") + 
  scale_fill_manual(values = c("red", "grey", "seagreen3"))

enter image description here

17
Mist