Je souhaite produire un histogramme avec ggplot2 en ordonnant les valeurs . Voici un tableau type :
Code : Tout sélectionner
ddf <- data.frame(type=c("B","B","B","B","A","A","A"),
label=c("station1","station2","station3","station4","station1","station2","station3"),
value=c(1,3,2,10,6,8,0.5))
et le type de graphe que je souhaite obtenir :
Code : Tout sélectionner
ddf$x <-factor(ddf$label, levels=unique(ddf[order(ddf$type,ddf$value), "label"]))
p <- ggplot(ddf) +
geom_bar(aes(x=x,y=value),stat="identity",width=0.5,fill="#1f78b4")+
facet_wrap(~type,nrow = 2,scales = "free")
p
l'ordre est respecté sur le premier histogramme, pas sur le deuxième. Les labels de x ne sont pas uniques, ce qui semble poser problème à ggplot. Le résultat attendu est :
Code : Tout sélectionner
ddf$label=make.unique(as.character(ddf$label))
ddf$x <-factor(ddf$label, levels=unique(ddf[order(ddf$type,ddf$value), "label"]))
p <- ggplot(ddf) +
geom_bar(aes(x=x,y=value),stat="identity",width=0.5,fill="#1f78b4")+
facet_wrap(~type,nrow = 2,scales = "free")
p
Que faudrait il pour remédier simplement à ce problème, sans générer les graphes un à un et utiliser
Code : Tout sélectionner
grid.arrange
Merci de vos réponses,