2015-12-11 13 views
8

Veri örnekteki coord_flip sonra:Ters sipariş DBV den R

gender Sektion 
1  m  5 
2  m  5 
3  w  3B 
4  w  3B 
5  w  3B 
6  m  4 

Aşağıdaki arsa var:

Sekplot <- ggplot(dbv,aes(x=Sektion, 
          fill=factor(gender), 
          stat="bin", 
          label = paste(round((..count..)/sum(..count..)*100), "%"))) 
Sekplot <- Sekplot + geom_bar(position="fill") 
Sekplot <- Sekplot + scale_y_continuous(labels = percent) 
Sekplot <- Sekplot + labs(title = "test") 
Sekplot <- Sekplot + scale_fill_discrete(name="test", breaks=c("m", "w", "k.A."), labels=c("m", "w", "k.A.")) 
Sekplot <- Sekplot + geom_hline(aes(yintercept = ges, linetype = "test"), colour = "black", size = 0.75, show_guide = T) 
Sekplot <- last_plot() + coord_flip() 
Sekplot <- Sekplot + guides(colour = guide_legend(override.aes = list(linetype = 0)), 
            fill = guide_legend(override.aes = list(linetype = 0)), 
            shape = guide_legend(override.aes = list(linetype = 0)), 
            linetype = guide_legend()) + theme(legend.title=element_blank()) 

Sekplot 

Çıktı:

Plot with y-axis in wrong order

nasıl tersine çevirebilir "Sektion" ekseninin sırası? En altta bir tane ve 8 tane olmak istiyorum.

Ben göre çalıştı Grup A $ Tarih < - faktörü (Grup A $ Tarih, seviyeler = devir (benzersiz (Grup A $ Tarih))): Birkaç tatlar

Sekplot <- last_plot() + coord_flip() + scale_x_reverse() 

ama bulamadık doğru yol.

+0

' - bakınız [Bu cevap] (http://stackoverflow.com/a/7310754/2461552) – aosmith

+0

Çok teşekkürler, çekicilik gibi çalıştı! Bu soruyu çözülmüş olarak işaretleyemem, çünkü cevap bir yorumda. –

+1

Bir cevap olarak eklememiştim çünkü yinelenen bulmaya çalışıyordum. Gerçekten iyi bir eşleşme bulamadım, bu yüzden cevap olarak ekleyeceğim. – aosmith

cevap

12

Bunu yapmak için scale_x_discrete kodunu limits argümanıyla ekleyebilirsiniz. Sınırları istediğiniz sıraya göre yazabilirsiniz, ancak birçok faktör seviyeniz olduğunda karmaşıklaşır. Bunun yerine, faktör düzeyini veri kümenizden çekebilir ve bunları ters sıralamaya koymak için rev'dan yararlanabilirsiniz.

gibi görünecektir: Sen scale_x_discrete (limitler = devir (seviyelerde (dat $ Sektion))) `gibi bir şey gerekiyor scale_x_discrete(limits = rev(levels(dbv$Sektion)))