Handmatig kleuren van plots met `scale_fill_manual` in ggplot2 werkt niet

Ik heb moeite met het handmatig wijzigen van de balkkleuren in ggplot2. Vreemd genoeg kan ik het werkend krijgen bij het gebruik van meer gecompliceerde formaten die een legenda vereisen door scale_fill_manualte gebruiken en de values,labels, enz. in te stellen. Maar bij het maken van een eenvoudiger diagram waarvoor geen legenda nodig is, krijg ik het niet voor elkaar. Hieronder staat een voorbeeld van een dataframe, de stappen die ik in dplyrheb gebruikt om de percentages te krijgen, en hoe ik denk dat het zou moeten werken in ggplot2. Ik wil alleen de balkkleuren handmatig wijzigen in rood, zeegroen3 en grijs.

Alle hulp wordt op prijs gesteld. Ik ben ook benieuwd naar verschillende manieren die worden gebruikt om snel percentages te berekenen. Ik heb piping gebruikt met dplyr, maar het zou geweldig zijn om andere manieren te zien om code te schrijven.

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"))

Antwoord 1, autoriteit 100%

Voor het geval je niet zeker weet wat @baptise betekent:

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

Other episodes