Je me rends compte que c'est vieux, mais peut-être que cette fonction que j'ai créée est utile à quelqu'un là-bas:
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)))
}
Maintenant, avec cette fonction, vous pouvez tracer de manière interactive avec ggplot2, comme ceci:
ggplot(order_axis(df, AXIS_X, COLUMN_Y),
aes(x = AXIS_X_o, y = COLUMN_Y)) +
geom_bar(stat = "identity")
Comme on peut le voir, la order_axis
fonction crée une autre dataframe avec une nouvelle colonne nommée de la même manière mais avec un _o
à la fin. Cette nouvelle colonne a des niveaux dans l'ordre croissant, donc ggplot2 trace automatiquement dans cet ordre.
Ceci est quelque peu limité (ne fonctionne que pour les combinaisons de caractères ou de facteurs et numériques de colonnes et dans l'ordre croissant) mais je le trouve toujours très utile pour le traçage en déplacement.