2017-07-07 2 views
0

Ich habe diesen DatenrahmenOrdnung y-Achse mit Facette

library(dplyr) 
dat =data.frame(parent = c("J","J","F","F"),group= c("A(4)","C(3)","A(4)","D(5)"),value=c(1,2,3,4), 
       count = c(4,3,4,5)) 
dat %>% arrange(parent,-count) 

parent group value count 
1  F D(5)  4  5 
2  F A(4)  3  4 
3  J A(4)  1  4 
4  J C(3)  2  3 

Sie oben sehen, dass die Daten, die von Eltern bestellt und dann absteigend zählen. Ich möchte, dass das Diagramm diese Reihenfolge beibehält, ABER wenn ich es im "J" Diagramm grafiere, kommt C (3) über A (4) und das sollte verehrt werden. Wie kann das gemacht werden?

Antwort

1

Sie können Ihren Faktor auf die Gruppenspalte setzen, indem Sie die aktuell geordneten Werte als Ebenen verwenden (umgekehrt, um die gewünschte Reihenfolge zu erhalten). Dies wird die Bestellung sperren.

library(dplyr) 
dat =data.frame(parent = c("J","J","F","F"),group= c("A(4)","C(3)","A(4)","D(5)"),value=c(1,2,3,4), 
       count = c(4,3,4,5)) 
dat <- dat %>% arrange(parent,-count) 

dat$group <- factor(dat$group, levels = rev(unique(dat$group))) 

ggplot(dat, aes(x = group, y= value))+ 
    geom_bar(stat ="identity",position = "dodge")+ 
    coord_flip()+ 
    facet_wrap(~parent, scale = "free_y") 
0

können Sie versuchen:

dat %>% arrange(parent,-count) %>% 
    mutate(group2=factor(c(2,1,4,3))) %>% 
    ggplot(aes(x = group2, y= value))+ 
    geom_bar(stat ="identity",position = "dodge")+ 
    coord_flip()+ 
    facet_wrap(~parent, scale = "free_y")+ 
    scale_x_discrete(breaks=1:4,labels = c("A(4)","D(5)","C(3)","A(4)"))