ggplot2 et un graphique à barres empilées avec des valeurs négatives
étant donné l'ensemble de données suivant:
Division Year OperatingIncome
1 A 2012 11460
2 B 2012 7431
3 C 2012 -8121
4 D 2012 15719
5 E 2012 364
6 A 2011 12211
7 B 2011 6290
8 C 2011 -2657
9 D 2011 14657
10 E 2011 1257
11 A 2010 12895
12 B 2010 5381
13 C 2010 -2408
14 D 2010 11849
15 E 2010 517
Comment remplir un diagramme à barres empilées dans ggplot2 qui inclut les valeurs négatives? Voici la séquence de base que j'utilise:
ggplot(income_m, aes(x=Year, y=OperatingIncome, fill=Division)) + geom_bar() +
+ scale_fill_brewer(type = "seq", palette = 1)
cela renvoie une erreur:
message D'avertissement: empilage mal défini lorsque ymin != 0
et au lieu du résultat attendu - les valeurs négatives sont affichées ci-dessous l'axe des X - ils ne sont tout simplement pas présents dans le diagramme à barres empilées. Y a-t-il un moyen de produire le graphique avec toutes les valeurs, positives et négatives, prises en compte?
1 réponses
Update : à partir de ggplot2 2.2.0, le gerbage pour les valeurs négatives est traité automatiquement, sans avoir à créer des couches séparées pour les valeurs positives et négatives.
si je comprends ce que vous cherchez, le truc est de mettre les deux données positives et négatives dans des couches séparées, et aussi d'utiliser stat = "identity"
:
dat <- read.table(text = " Division Year OperatingIncome
1 A 2012 11460
2 B 2012 7431
3 C 2012 -8121
4 D 2012 15719
5 E 2012 364
6 A 2011 12211
7 B 2011 6290
8 C 2011 -2657
9 D 2011 14657
10 E 2011 1257
11 A 2010 12895
12 B 2010 5381
13 C 2010 -2408
14 D 2010 11849
15 E 2010 517",header = TRUE,sep = "",row.names = 1)
dat1 <- subset(dat,OperatingIncome >= 0)
dat2 <- subset(dat,OperatingIncome < 0)
ggplot() +
geom_bar(data = dat1, aes(x=Year, y=OperatingIncome, fill=Division),stat = "identity") +
geom_bar(data = dat2, aes(x=Year, y=OperatingIncome, fill=Division),stat = "identity") +
scale_fill_brewer(type = "seq", palette = 1)