Mir ist klar, dass dies alt ist, aber vielleicht ist diese Funktion, die ich erstellt habe, für jemanden da draußen 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)))
}
Mit dieser Funktion können Sie nun interaktiv mit ggplot2 wie folgt zeichnen:
ggplot(order_axis(df, AXIS_X, COLUMN_Y),
aes(x = AXIS_X_o, y = COLUMN_Y)) +
geom_bar(stat = "identity")
Wie zu sehen ist, erstellt die order_axis
Funktion einen weiteren Datenrahmen mit einer neuen Spalte mit demselben Namen, jedoch mit einem _o
am Ende. Diese neue Spalte enthält Ebenen in aufsteigender Reihenfolge, sodass ggplot2 automatisch in dieser Reihenfolge gezeichnet wird.
Dies ist etwas eingeschränkt (funktioniert nur für Zeichen- oder Faktor- und Zahlenkombinationen von Spalten und in aufsteigender Reihenfolge), aber ich finde es immer noch sehr nützlich für das Plotten unterwegs.