2014-04-23 4 views
1

Я хочу ранжировать переменные в моем наборе данных в порядке убывания используемого количества используемых растений. Я пробовал ранжировать в .csv, а затем экспортировать его в R. Но даже тогда сюжет не был оценен в требуемом порядке. Вот мой набор данныхрейтинг в порядке убывания в R

df <- structure(list(Lepidoptera.Family = structure(c(3L, 2L, 5L, 1L, 4L, 6L), 
    .Label = c("Hesperiidae", "Lycaenidae", "Nymphalidae", "Papilionidae", "Pieridae","Riodinidae"), class = "factor"), 
      LHP.Families = c(55L, 55L, 15L, 14L, 13L, 1L)), 
    .Names = c("Lepidoptera.Family", "LHP.Families"), 
    class = "data.frame", row.names = c(NA, -6L)) 

library(ggplot2) 
library(reshape2) 

gg <- melt(df,id="Lepidoptera.Family", value.name="LHP.Families", variable.name="Type") 

ggplot(gg, aes(x=Lepidoptera.Family, y=LHP.Families, fill=Type))+ 
     geom_bar(stat="identity")+ 
     coord_flip()+facet_grid(Type~.) 

Как я оцениваю их по убыванию? Кроме того, я хочу объединить 3 графика в один. Как я могу это сделать?

ответ

5

Причина это происходит в том, что ggplot вычерчивает й переменные, которые являются факторами упорядочение базовых значений (напомним, что факторы хранятся как числа под обложками). Если вы хотите, чтобы график их в альтернативном порядке, вы должны изменить порядок уровней перед построением графика

gg$Lepidoptera.Family<-with(gg, 
        factor(Lepidoptera.Family, 
          levels=Lepidoptera.Family[order(LHP.Families)])) 
+0

быть справедливым, я думаю, что ответ @Paul Hiemstra «s ниже лучше (использование повторного заказа чище). Я бы предложил отказаться от моего и принять его. – JPC

+0

+1 Ваше решение совершенно верно, поэтому прием в порядке. –

+0

хорошо спасибо хороший сэр – JPC

3

Хитрость заключается в том, чтобы изменить порядок levels в Lepidoptera.Family факторе, который по умолчанию является алфавитным:

df = within(df, { 
    factor(Lepidoptera.Family, levels = reorder(Lepidoptera.Family, LHP.Families)) 
}) 

gg <- melt(df,id="Lepidoptera.Family", value.name="LHP.Families", variable.name="Type") 
ggplot(gg, aes(x=Lepidoptera.Family, y=LHP.Families, fill=Type))+ geom_bar(stat="identity")+ coord_flip()+facet_grid(Type~.) 

enter image description here

Смежные вопросы