Ich bin ein Neuling mit ggplot2 und habe eine Frage zum Generieren eines gestapelten Balkendiagramms. Ich habe das Buch und die spezielle Webseite überprüft, kann das Problem jedoch nicht lösen. Ich habe zwei Faktoren, von denen einer 2 Ebenen hat (Präsenz-Abwesenheit), die anderen 10 Stufen. Lasst uns diese zwei "Variablen" und "Früchte" nennen.Gestapeltes Balkendiagramm in R (ggplot2) mit Y-Achse und Balken als Prozentsatz der Zählungen
Ich möchte ein gestapeltes Balkendiagramm erstellen, in dem jeder Balken eine Fruchtart widerspiegelt und die Anzahl der Anwesenheits-/Abwesenheitsbeobachtungen in "Variablen" übereinander gestapelt sind. Dies ist relativ einfach (siehe Code für die folgende Grafik 1), aber ich möchte auch, dass die Balken und die y-Achse die Anzahl der Anzahl der Anwesenheits-Abwesenheit in "Variable" als Prozentsatz ausdrücken. Mit anderen Worten, alle Balken sollten die gleiche Höhe haben (was insgesamt 100% widerspiegelt), und die Anzahl der Anwesenheits-Abwesenheits-Beobachtungen sollte in Prozentsätze umgerechnet werden.
Ich kann die y-Achse skalieren zu einem Prozentsatz mit ..count .. * 100/sum (.. count ..), aber ich kann nicht ergründen, wie die tatsächlichen Bars zu konvertieren. Ich habe einen weiteren Plot mit Facettierung erstellt (Code für Plot 2 unten), der prozentual das erreicht, was ich will, aber ich würde es bevorzugen, wenn die beiden Balken übereinander liegen. Hat jemand eine Idee, wie man das erreicht? Ich habe Dummy-Daten und reproduzierbares Beispiel zur Verfügung gestellt. Danke für jede Hilfe.
Steve
dat <- data.frame(fruit=c("Apple", "Apple", "Orange", "Orange", "Orange", "Orange",
"Orange", "Pear", "Pear", "Pear"), variable=c("Present", "Absent",
"Present", "Present", "Present", "Present", "Absent", "Absent",
"Absent", "Present"))
# stacked bar plot
ggplot(dat, aes(x = fruit, fill = variable)) +
geom_bar(aes(y = ..count..*100/sum(..count..))) +
xlab("Fruit") +
ylab("Would like this to be percentage") +
scale_fill_manual("Condition", values = alpha(c("firebrick", "dodgerblue4"), 1))
# with faceting
ggplot(dat, aes(x = variable, fill = variable)) +
geom_bar(aes(y = ..count..*100/sum(..count..))) +
facet_grid(. ~ fruit) +
xlab("Fruit") +
ylab("Would like this to be percentage") +
scale_fill_manual("Condition", values = alpha(c("firebrick", "dodgerblue4"), 1))
Dank Ramnath, das ist genau das, was ich für die Bars brauche. Wenn ich das tue, werden die Y-Achsenbeschriftungen jedoch auf eine 0: 1-Skalierung zurückgesetzt. Ich möchte, dass sie 0 bis 100 sind. Einschließlich y = ..Zählungen. * 100 oder y = ..Dichte. * 100 in "aes" scheint nicht zu funktionieren. Irgendwelche Ideen? – Steve
'+ scale_y_continuous (" ", Formatierer =" Prozent ")'. Das erste '' '' löscht die "count" Beschriftung, aber Sie können ein beliebiges Label hinzufügen. – James
Vielen Dank James, das funktioniert perfekt. – Steve