Я понимаю, что это старая, но, может быть, эта функция, которую я создал, будет полезна кому-то там:
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)))
}
Теперь с помощью этой функции вы можете интерактивно построить график с помощью ggplot2, например так:
ggplot(order_axis(df, AXIS_X, COLUMN_Y),
aes(x = AXIS_X_o, y = COLUMN_Y)) +
geom_bar(stat = "identity")
Как можно видеть, order_axis
функция создает другой фрейм данных с новым столбцом, названным так же, но с _o
концом в конце. Этот новый столбец имеет уровни в порядке возрастания, поэтому ggplot2 автоматически строит графики в этом порядке.
Это несколько ограничено (работает только для символьных или факторных и числовых комбинаций столбцов и в порядке возрастания), но я все еще считаю его очень полезным для построения графиков на ходу.