Sei que isso é antigo, mas talvez essa função que criei seja útil para alguém por aí:
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)))
}
Agora, com esta função, você pode plotar interativamente com o ggplot2, assim:
ggplot(order_axis(df, AXIS_X, COLUMN_Y),
aes(x = AXIS_X_o, y = COLUMN_Y)) +
geom_bar(stat = "identity")
Como pode ser visto, a order_axis
função cria outro quadro de dados com uma nova coluna denominada igual, mas com a _o
no final. Esta nova coluna possui níveis em ordem crescente, portanto o ggplot2 é automaticamente plotado nessa ordem.
Isso é um pouco limitado (funciona apenas para combinações de caracteres ou fatores e numéricos de colunas e em ordem crescente), mas ainda acho muito útil para plotagem em movimento.