2011-05-11 22 views
43

Bu forumdaki cevapları inceledim, ancak bu özel soruna bir cevap bulamamış gibi görünüyor.ggplot'ta çubukların sipariş edilmesi

breadth_data <- read.table(textConnection("Stakeholder Value 
'Grantseekers' 0.90 
'Donors' 0.89 
'Community' 0.55 
'Hurricane Relief Fund' 0.24 
'Media' 0.19 
'Employment Seekers' 0.12 
'Affiliates' 0.10 
'Youth' 0.09 
'Women' 0.02 
'Former Board Members' 0.01"), header=TRUE) 
Sonra

temel çubuk grafik: Doğrusu alfabetik sırayla onları olmasındansa aşağıdaki verilere sahip ve barlar "Değeri" anlamında büyükten en küçüğe doğru sıralanır çubuk grafik oluşturmak istiyorum

c <- ggplot(breadth_data, aes(x=Stakeholder, y=Value)) 
c + geom_bar(stat="identity") + coord_flip() + scale_y_continuous('') + scale_x_discrete('') 

StackOverflow'ta gördüğüm pek çok farklı yeniden sıralama ve dönüşüm denedim ama işe yarayan bir tane bulamıyorum. Bunun oldukça basit olduğuna eminim, ama herhangi bir yardım için minnettar olurum!

breadth_data <- transform(breadth_data, 
          Stakeholder = reorder(Stakeholder, Value)) 

verir:

reordered barplot

Eğer yuvarlak onları başka bir yol istiyorsanız, kolay bir

sayesinde

Greg

cevap

68

Sen fonksiyonunu reorder() istiyorum yol sadece'yi kullanmaktır reorder() çağrısı içinde Value üzerinde:

breadth_data <- transform(breadth_data, 
          Stakeholder = reorder(Stakeholder, 
               order(Value, decreasing = TRUE))) 
+7

ya da yönünü tersine çevirmek için 'reorder' çağrısı içinde' -Value' kullanın. –

+0

@Richie - tabiki (tokatlar yüz!) - açıkça bu arvoyu düşünmüyorsun! –

+0

Teşekkürler, @Gavin ve @Richie! Mükemmel! Yardımı takdir ediyorum. –