根据多个变量对箱线图重新排序,而无需更改数据框

时间:2019-01-24 12:29:54

标签: r ggplot2 boxplot

我有一个数据框data,其中有多列。

dput(head(data,15))

Counts samples.sample_name  samples.class samples.cluster
0      F1S4_161018_001_A01  Glutamatergic   LGN Exc BTNL9
2      F1S4_161018_001_B01  Glutamatergic   LGN Exc BTNL9
41     F1S4_161018_001_C01  GABAergic       LGN Inh NTRK1
0      F1S4_161018_001_E01  Glutamatergic   LGN Exc PAX3
1      F1S4_161018_001_F01  Glutamatergic   LGN Exc BTNL9
0      F1S4_161018_001_G01  Glutamatergic   LGN Exc PAX3
10     F1S4_161018_001_H01  GABAergic       LGN Inh LAMP1
25     F1S4_161018_001_F01  GABAergic       LGN Inh PAX3

共有15000行,每行是一个单元格。

我想在x轴上按计数(从低到高)排序但也按类排序的每个簇中创建一个计数箱图。因此,首先所有簇按GABA能级计数,其次是谷氨酸能级,等等。

我现在有以下代码行:

library(ggplot2)

ggplot(data[which(data$Counts > 0), ], 
       aes(x = reorder(samples. cluster, Counts), y = Counts)) + 
  geom_boxplot(aes(color = samples.class)) + 
  labs(title = paste('Expression of DMD in the human cortex', brain_area), 
       x = 'Cluster', y = 'Log2(Counts)') + 
  geom_text(aes(label = ..count..), y = -1, stat = 'count', colour = 'blue', size = 5) +
  coord_cartesian(ylim = c(-1, max(data$Counts))) + 
  theme(axis.text.x = element_text(angle = 60, hjust = 1), 
        legend.position = 'none')

我现在有这个情节:

enter image description here

我想要这样的东西:

enter image description here

是否有任何方法可以像之前所述添加一些东西来对箱线图重新排序,而无需更改数据框?由于我有许多具有不同群集名称的不同数据集,仅通过使用向量来“手工”重新排序就需要大量工作,因此我想知道是否还有其他解决方案。

0 个答案:

没有答案