2015-01-30 14 views
5

5 sorudan oluşan bir anket uygulanır. Sorular aynı olası cevapları paylaşıyor. İşte ggplot2 ile çizim için yeniden şekillendirilmiş veriler.Yığınlanmış mafsal x yeniden doldurma değerlerine göre yeniden ggplot2

library(tidyr) 
library(magrittr) 

data <- data.frame(ID = c(1:500), 
        q1 = factor(sample(c(1:4), 500, replace = T), 
           labels = c("A", "B", "C", "D")), 
        q2 = factor(sample(c(1:4), 500, replace = T), 
           labels = c("A", "B", "C", "D")), 
        q3 = factor(sample(c(1:4), 500, replace = T), 
           labels = c("A", "B", "C", "D")), 
        q4 = factor(sample(c(1:4), 500, replace = T), 
           labels = c("A", "B", "C", "D")), 
        q5 = factor(sample(c(1:4), 500, replace = T), 
           labels = c("A", "B", "C", "D"))) %>% 
gather(question, value, q1:q5) 

Verilen yanıt sayısına göre soruların sıralamasını sıralamak istiyorum. Bunun yerine bu ...

enter image description here

library(ggplot2) 

ggplot(data, aes(x = question , fill = value)) + 
    geom_bar() + 

    theme(panel.background = element_rect(fill = "white")) + 
    scale_fill_manual("Value", values = c("#2171B5", "#6BAED6", "#BDD7E7", 
            "#EFF3FF")) 

... Ben x ekseni boyunca soruların sırası örneğin cevap = D sayımı dayalı olmak istiyorum.

+2

önceden miktarı precomputing) 1 öneriyoruz; 2) scale_x_manual' ayarı ile yeniden sipariş vermek. – tonytonov

cevap

6

Anladım. Aşağıdaki örnekte verilen yanıt sayısı = A ile sıralanmıştır.

data$question <- reorder(dataf$question, data$value, function(x) max(table(x)[1])) 

    ggplot(heatDf, aes(x = question, fill = value)) + 
     geom_bar() + 
     theme(panel.background = element_rect(fill = "white")) + 
     scale_fill_manual("", values = c("#2171B5", "#6BAED6", "#BDD7E7", 
             "#EFF3FF", "grey30")) 

enter image description here

+1

ayrıca ggplot da yapabilirsiniz (data, aes (x = factor (soru, levels = as.character (sayı (veri, soru, değer)%>% ungroup%>% filter (value == "D")%> % düzenlemek (n)%>%. $ soru), = = DOĞRU) , doldurma = değer)), ancak burada yaptığınız gibi ggplot dışında bunu yapmak daha iyidir. – hrbrmstr

İlgili konular