Ich weiß, das ist alt, aber vielleicht diese Funktion habe ich ist es an jemanden nützlich:
order_axis<-function(data, axis, column)
{
# for interactivity with ggplot2
arguments <- as.list(match.call())
col <- eval(arguments$column, data)
ax <- eval(arguments$axis, data)
# evaluated factors
a<-reorder(with(data, ax),
with(data, col))
#new_data
df<-cbind.data.frame(data)
# define new var
within(df,
do.call("<-",list(paste0(as.character(arguments$axis),"_o"), a)))
}
Jetzt, mit dieser Funktion können Sie interaktiv mit ggplot2 zeichnen können, wie folgt:
ggplot(order_axis(df, AXIS_X, COLUMN_Y),
aes(x = AXIS_X_o, y = COLUMN_Y)) +
geom_bar(stat = "identity")
Wie zu sehen ist, dieDie-Funktion erstellt ein anderes Datenframe mit einer neuen Spalte, die gleich benannt ist, aber am Ende mit _o
. Diese neue Spalte hat Ebenen in aufsteigender Reihenfolge, so dass ggplot2 automatisch in dieser Reihenfolge plottet.
Dies ist etwas begrenzt (funktioniert nur für Zeichen oder Faktor und numerische Kombinationen von Spalten und in aufsteigender Reihenfolge), aber ich finde es immer noch sehr nützlich für das Plotten von unterwegs.
Ich bin schockiert diese Antwort nicht mehr upvotes hat, 90% der Zeit ist dies der richtige Weg, es zu tun. – Gregor
Ich denke, beide Faktor-Aufrufe sind überflüssig. Es gibt einen impliziten Aufruf für das erste Argument und das zweite Argument wird als numerisch angenommen. –