如何重新排序ggplot2中的boxplot标签

时间:2016-11-23 16:25:11

标签: r ggplot2

  1. 我想绘制没有NAs的第一个数字,并按中位数排序。我想我可以通过使用na.omit和下面的代码1来做到这一点。

  2. 如何通过保留图1(carA和carC)中的图形来绘制第二个图形,并保持与图1中相同的顺序。

  3.       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
    

    CODE1

    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 个答案:

答案 0 :(得分: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)