Ich habe mit dem Erstellen eines Pareto Chart in R mit dem Ggplot2-Paket gekämpft. In vielen Fällen möchten wir beim Erstellen eines Balkendiagramms oder Histogramms Objekte nach der X-Achse sortieren. In einem Pareto-Diagramm möchten wir, dass die Objekte absteigend nach dem Wert in der Y-Achse sortiert werden. Gibt es eine Möglichkeit, mit ggplot Elemente nach dem Wert in der Y-Achse zu sortieren? Ich habe versucht, zuerst den Datenrahmen zu sortieren, aber es scheint, dass ggplot sie neu sortiert.Erstellen eines Pareto-Diagramms mit ggplot2 und R
Beispiel:
val <- read.csv("http://www.cerebralmastication.com/wp-content/uploads/2009/11/val.txt")
val<-with(val, val[order(-Value), ])
p <- ggplot(val)
p + geom_bar(aes(State, Value, fill=variable), stat = "identity", position="dodge") + scale_fill_brewer(palette = "Set1")
der Datenrahmen val sortiert ist aber die Ausgabe wie folgt aussieht:
alt text http://www.cerebralmastication.com/wp-content/uploads/2009/11/exp.png
Hadley wies darauf hin, richtig, dass dies eine viel bessere Grafik erzeugt für die Ansicht Actuals vs vorhergesagt:
ggplot(val, aes(State, Value)) + geom_bar(stat = "identity", subset = .(variable == "estimate"), fill = "grey70") + geom_crossbar(aes(ymin = Value, ymax = Value), subset = .(variable == "actual"))
, die zurückgibt:
alt text http://www.cerebralmastication.com/wp-content/uploads/2009/11/exp1.png
Aber es ist noch kein Pareto-Diagramm. Irgendwelche Tipps?
Sie können dies tun, mit Basis Grafiken Par (neu) Trick von overplotting mit - gleichen Ansatz wie für die üblichen ‚Diagramm mit zwei Y-Achsen‘ Problem. Ggplot2 Ich kann nicht anders (noch, eines Tages bekomme ich vielleicht Zeit, es nachzuholen). –
Ich versuche soooo schwer zu vermeiden, Basisgrafiken zu lernen. Ich bin fantastisch faul :) –