2016-11-23 66 views
0
  1. 我想繪製第一個數字,沒有NAs,按中位數排序。我想我可以通過使用na.omit和下面的code1來做到這一點。如何重新排列ggplot2中的boxplot標籤

  2. 通過保持在如圖一的那些(CARA和CARC)如何可以繪製第二個數字,並保持相同的排序,如圖1

一個

 R G T 
EG1 2 20 carA 
EG2 4 40 carA 
EG3 8 80 carA 
EG4 10 100 carA 
EG5 NA 20 carB 
EG6 NA 40 carB 
EG7 NA 50 carB 
EG8 NA 90 carB 
EG9 4 50 carC 
EG10 8 60 carC 
EG11 12 70 carC 
EG12 24 90 carC 

編碼1

ggplot(a, aes(reorder(T, log2(R+1), median, order=TRUE), log2(R+1), fill=T)) + geom_boxplot()+coord_flip() 

enter image description here

碼2

ggplot(a, aes(reorder(T, log2(G+1), median, order=TRUE), log2(G+1), fill=T)) + geom_boxplot()+coord_flip() 

enter image description here

回答

1

您需要捕獲從第一情節的順序,並用它來設置在第二極限scale_x_discrete(由於coord_flip)。

limits <- levels(reorder(a$T, log2(a$R + 1))) 

ggplot(a, aes(reorder(T, log2(R + 1), median, order = TRUE), log2(R + 1), fill = T)) + 
    geom_boxplot() + 
    coord_flip() + 
    scale_x_discrete(limits = limits) 

ggplot(a, aes(reorder(T, log2(G + 1), median, order = TRUE), log2(G + 1), fill = T)) + 
    geom_boxplot() + 
    coord_flip() + 
    scale_x_discrete(limits = limits) 
+0

我會添加na.omit(a),忽略nulll值。感謝它運作良好! – user1883491