如上图所示,大家很多时候对于分组之间的基因交并补的展示往往第一时间想到venn或upset,其实也可以使用上述热图来展示。这样不仅可以展示出组之间的交并补情况,还可以展示交并补集合中的基因名称以及基因所处的分组(热图侧边栏),使你的图更加复杂且内容丰富。
放一个在做这个图中一定会使用到的计算交并补的函数,可以将分组列表转化为01矩阵
function(list_with_elements,element_name="gene"){
require(dplyr)
m=list_with_elements%>%do.call(c,.)%>%unique()
b=matrix(NA,nrow = length(m),ncol = length(list_with_elements))%>%as.data.frame()
n=data.frame(x=m)%>%cbind(.,b)
colnames(n)<-c(element_name,names(list_with_elements))
for (i in 2:c(length(list_with_elements)+1)) {
n[match(list_with_elements[[i-1]],n[[element_name]]),i]=1
n[is.na(n[[i]]),i]<-0
}
return(n)
}
网友评论