Bunun eski olduğunu anlıyorum, ama oluşturduğum bu fonksiyon orada birisi için yararlı olabilir:
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)))
}
Şimdi, bu işlevle ggplot2 ile etkileşimli olarak çizim yapabilirsiniz:
ggplot(order_axis(df, AXIS_X, COLUMN_Y),
aes(x = AXIS_X_o, y = COLUMN_Y)) +
geom_bar(stat = "identity")
Görülebileceği gibi, order_axis
işlev aynı adlı ancak _o
sonunda a ile yeni bir sütun içeren başka bir veri çerçevesi oluşturur . Bu yeni sütun artan sırada düzeylere sahiptir, bu nedenle ggplot2 otomatik olarak bu sırayla çizilir.
Bu biraz sınırlı (sadece karakter veya faktör ve sütunların sayısal kombinasyonları ve artan sırada çalışır) ama yine de hareket halindeyken çizmek için çok yararlı buluyorum.