2016-02-29 2 views
0

У меня есть следующие кадр данныхКак отображать рейтинг с помощью ggplot

Country<-c("Chile_T", "Canada_T", "El Salvador_N", "Finland_N", "Germany_N", "Germany_T") 
Loss<-c(1.14e-06, 6.14e-07, 8.93e-09, 8.93e-09, 1.05e-10, 1.25e-11) 
df<- data.frame(Country, Loss) 

Я пытался показать это, как ранжирование, делая перевернуто-над гистограмму. Пока что так хорошо, НО мои бары всегда заказываются по Country, и я бы хотел, чтобы они были заказаны Loss.

Я попробовал несколько вещей, в частности, это:

df <- within(df, Loss <- factor(Loss,levels=names(sort(table(Loss), decreasing=TRUE)))) 

ggplot(data=df, aes(x=Country, y=Loss))+ 
    geom_bar(stat = "identity", width=0.95, fill="black")+ 
    labs(x = "", y = "")+ 
    coord_flip()+ 
    scale_y_discrete(breaks=NULL)+ 
    theme (legend.position="none", 
     axis.text.x = element_blank(), 
     axis.text.y = element_text(size=17), axis.title.y=element_text(size=17)) 

Пожалуйста, может кто-то мне точку в правильном направлении? Заранее спасибо!!!

ответ

1

Вы можете использовать reorder:

Country<-c("Chile_T", "Canada_T", "El Salvador_N", "Finland_N", "Germany_N", "Germany_T") 
Loss<-c(1.14e-06, 6.14e-07, 8.93e-09, 8.93e-09, 1.05e-10, 1.25e-11) 
df<- data.frame(Country, Loss) 
library(ggplot2) 
ggplot(data=df, aes(x=reorder(Country, Loss), y=Loss))+ 
    geom_bar(stat = "identity", width=0.95, fill="black") + 
    coord_flip() 
+0

Это один работает отлично! Спасибо! – samyandi

+0

Возможно, вы также можете мне помочь в результате проблемы ... Мои ценности для Германии настолько малы, что баров не существует ... Есть ли способ, который я могу разумно преобразовать ось, чтобы все полосы были видны? Я попробовал scale_y_log10(), но это «переворачивает» график странно ... – samyandi

+0

Он переворачивает диаграмму, потому что журнал ваших значений отрицательный. Вы пробовали 'scale_y_sqrt()'? Или, может быть, сделайте свои миниатюрные номера потерь раньше. – lukeA

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