ggplot côte à côte geom bar()

je veux créer un barplot côte à côte en utilisant geom_bar () de cette base de données,

> dfp1
   value   percent1   percent
1 (18,29] 0.20909091 0.4545455
2 (29,40] 0.23478261 0.5431034
3 (40,51] 0.15492958 0.3661972
4 (51,62] 0.10119048 0.1726190
5 (62,95] 0.05660377 0.1194969
<!-Avec des valeurs sur l'axe des abscisses et les pourcentages comme les barplots côte à côte. J'ai essayé d'utiliser ce code,

p = ggplot(dfp1, aes(x = value, y= c(percent, percent1)), xlab="Age Group")
p = p + geom_bar(stat="identity", width=.5)  

cependant, j'obtiens cette erreur: Error: L'esthétique doit soit être Longueur un, soit la même longueur que les dataproblèmes:valeur. Mon pourcentage et mon pourcentage sont de la même longueur que la valeur, donc je suis confus. Merci pour l'aide.

13
demandé sur David Arenburg 2014-08-01 03:22:43

1 réponses

Vous aurez besoin d' melt vos données en premier sur value. Il va créer une autre variable appelée value par défaut, vous devrez donc le renommer (Je l'ai appelé percent). Ensuite, tracez le nouvel ensemble de données en utilisant fill afin de séparer les données en groupes, et position = "dodge" afin de mettre les barres côte à côte (au lieu de sur le dessus les uns des autres)

library(reshape2)
library(ggplot2)
dfp1 <- melt(dfp1)
names(dfp1)[3] <- "percent"
ggplot(dfp1, aes(x = value, y= percent, fill = variable), xlab="Age Group") +
geom_bar(stat="identity", width=.5, position = "dodge")  

enter image description here

23
répondu David Arenburg 2014-08-01 00:09:31