Saya menyadari ini sudah lama, tetapi mungkin fungsi yang saya buat ini berguna untuk seseorang di luar sana:
order_axis<-function(data, axis, column)
{
arguments <- as.list(match.call())
col <- eval(arguments$column, data)
ax <- eval(arguments$axis, data)
a<-reorder(with(data, ax),
with(data, col))
df<-cbind.data.frame(data)
within(df,
do.call("<-",list(paste0(as.character(arguments$axis),"_o"), a)))
}
Sekarang, dengan fungsi ini Anda dapat membuat plot secara interaktif dengan ggplot2, seperti ini:
ggplot(order_axis(df, AXIS_X, COLUMN_Y),
aes(x = AXIS_X_o, y = COLUMN_Y)) +
geom_bar(stat = "identity")
Seperti yang bisa dilihat, order_axis
fungsi membuat kerangka data lain dengan kolom baru bernama sama tetapi dengan a _o
di akhir. Kolom baru ini memiliki level dalam urutan menaik, jadi ggplot2 secara otomatis memplot dalam urutan itu.
Ini agak terbatas (hanya berfungsi untuk karakter atau faktor dan kombinasi numerik kolom dan dalam urutan menaik) tetapi saya masih merasa sangat berguna untuk membuat plot saat bepergian.