ggplot: изменить порядок столбцов в стопке на основе имени внутри столбца

ggplot(data,aes(x=ab,y=Freq/total,fill=Result))+
      geom_bar(stat="identity")+
     theme(strip.text.x = element_text(size=8, angle=0),
      strip.background = element_rect(colour="black", fill="#CCCCFF"))+
    ggtitle("H.somnus SIR %")+ylab("% SIR")+
    scale_y_continuous(labels=percent,breaks=seq(0,1,.1))+
    theme_set(theme_barplot())

Выше приведен код, который я использую. data — это таблица, которую я расплавил, но столбец «результат» находится в алфавитном порядке, а str (результат) — это фактор с 4 уровнями: например, A, B, C, D. Что бы я хотел отобразить столбцы с самым большим столбцом внизу, а порядок был бы D, B, C, A

Спасибо


person Dan    schedule 09.04.2013    source источник


Ответы (1)


Это немного взломанное исправление, но оно работает. ggplot будет отображать сложенные столбцы в том порядке, в котором они встречаются при использовании stat = "identity". Чтобы получить стек в порядке D, B, C, A, измените порядок вашего data.frame следующим образом:

data <- data[c(data$Result == "D",
               data$Result == "B",
               data$Result == "C",
               data$Result == "A"),]

запись в файлах справки ggplot2 могла бы быть лучше в этом отношении.

person OliE    schedule 10.04.2013