Tôi nhận ra điều này đã cũ, nhưng có lẽ chức năng này tôi tạo ra rất hữu ích cho ai đó ngoài kia:
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)))
}
Bây giờ, với chức năng này, bạn có thể vẽ tương tác với ggplot2, như thế này:
ggplot(order_axis(df, AXIS_X, COLUMN_Y),
aes(x = AXIS_X_o, y = COLUMN_Y)) +
geom_bar(stat = "identity")
Có thể thấy, order_axis
hàm tạo ra một khung dữ liệu khác với một cột mới có tên tương tự nhưng _o
ở cuối. Cột mới này có các cấp theo thứ tự tăng dần, vì vậy ggplot2 sẽ tự động vẽ đồ thị theo thứ tự đó.
Điều này hơi hạn chế (chỉ hoạt động cho các ký tự hoặc yếu tố và kết hợp số cột và theo thứ tự tăng dần) nhưng tôi vẫn thấy nó rất hữu ích cho âm mưu khi đang di chuyển.