eine Mischung aus negativen und positiven Werten ist für ggplot2 schwierig Stacking. Am einfachsten ist es, den Dataset in zwei Teile aufzuteilen, einen für positive und einen für negative. Fügen Sie dann Strichlayer getrennt hinzu. Ein klassisches Beispiel ist here.
Sie können das Gleiche mit dem Text tun, indem Sie eine Textschicht für die positiven y-Werte und eine für die Negative hinzufügen.
dat1 = subset(dat, value >= 0)
dat2 = subset(dat, value < 0)
ggplot(mapping = aes(x = group, y = value, fill = factor(day))) +
geom_bar(data = dat1, stat = "identity", position = "stack")+
geom_bar(data = dat2, stat = "identity", position = "stack") +
geom_text(data = dat1, aes(label = round(value,0)), color = "black", position = "stack") +
geom_text(data = dat2, aes(label = round(value,0)), color = "black", position = "stack")
Wenn die derzeit Entwicklungsversion von ggplot2 (2.1.0.9000) verwendet wird, die Stapel scheint nicht richtig in geom_text
für negative Werte zu arbeiten. Sie können die Textpositionen jederzeit "von Hand" berechnen lassen.
library(dplyr)
dat2 = dat2 %>%
group_by(group) %>%
mutate(pos = cumsum(value))
ggplot(mapping = aes(x = group, y = value, fill = factor(day))) +
geom_bar(data = dat1, stat = "identity", position = "stack")+
geom_bar(data = dat2, stat = "identity", position = "stack") +
geom_text(data = dat1, aes(label = round(value,0)), color = "black") +
geom_text(data = dat2, aes(label = round(value,0), y = pos), color = "black")
Sie sollten ihr Augenmerk auf die Warnung zahlen: 'Warnmeldung: Stapeln nicht gut definiert, wenn ymin = 0 'heißt Sie eine verwirrende Diagramm machen!. – alistaire
Warum verwenden Sie 'position =" identity "' in 'geom_bar', wenn Sie möchten, dass die Balken gestapelt werden? – Axeman
Auch @alistaire, ich bekomme diese Warnung nicht, läuft '2.1.0.9000'. – Axeman