快速绘制Upset图
2020-08-31 本文已影响0人
xw_欢乐豆
分析背景
提到集合的可视化,大家第一时间想到的是用Venn图来展示,在前期的推文中,小编也给大家分享了venn图的绘制方法。然而,值得一提的是,小编分享的方法是基于R语言,并将根据项目经验,将常规的代码语句进行封装,对于刚入门的小白来说,只需要整理好自己的数据,将数据传入到函数中,即可得到高质量的Venn图,方面快捷,省时省力。但是,当集合数多比如 7个以上的时候那就会看的眼花缭乱了。
针对上面这种情况,小编今天可大家编写了一个用于多个集合数据可视化小程序——集合图,并且小编已经将其封装成函数,小伙伴们只需将自己的数据传入到函数中,即可做出高质量的图片,保存下来,AI编辑一下,就可以插入到自己的论文写作中,话不多说,直接上脚本!
分析方法
# 安装R包
if (!requireNamespace("UpSetR", quietly = TRUE))
install.packages("UpSetR",repos = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/")
if (!requireNamespace("RColorBrewer", quietly = TRUE))
install.packages("RColorBrewer",repos = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/")
if (!requireNamespace("data.table", quietly = TRUE))
install.packages("data.table",repos = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/")
# 自定义函数
## 快速读入数据
readFlie=function(input,type,row=T,header=T){
# input 为读入文件的路径,type为读入文件的类型,格式为‘.txt’或‘.csv’,row=T,将文件的第一列设置为列名
library(data.table,quietly = TRUE)
if(type=='txt'){
dat = fread(input,header = header,sep='\t',stringsAsFactors = F,check.names = F)
if(row){
dat = as.data.frame(dat,stringsAsFactors = F)
rownames(dat) = dat[,1]
dat = dat[,-1]
}else{
dat = as.data.frame(dat,stringsAsFactors = F)
}
}else{
dat = fread(input,header = header,sep=',',stringsAsFactors = F,check.names = F)
if(row){
dat = as.data.frame(dat,stringsAsFactors = F)
rownames(dat) = dat[,1]
dat = dat[,-1]
}else{
dat = as.data.frame(dat,stringsAsFactors = F)
}
}
return(dat)
}
阅读原文,获取脚本源码和测试数据。
实战演练
df = readFlie('./upset.txt',type = 'txt',row = F)
# 抽取数据,制造测试数据
set.seed(1234)
df_list = list('Symbol1'=sample(df$symbol,180),'Symbol2'=sample(df$symbol,200),
'Symbol3'=sample(df$symbol,220),'Symbol4'=sample(df$symbol,240),
'Symbol5'=sample(df$symbol,260),'Symbol6'=sample(df$symbol,280),
'Symbol7'=sample(df$symbol,300),'Symbol8'=sample(df$symbol,310),
'Symbol9'=sample(df$symbol,150))
# 绘制集合图
# 4维集合图
wn_upset(df_list[1:4])
# 6维集合图
wn_upset(df_list[1:6])
# 9维集合图
wn_upset(df_list)
# 保存图片
pdf('./up_set.pdf',height = 9,width = 16)
# 8维集合图
wn_upset(df_list[1:8])
dev.off()
参考文献
- Lex, A., Gehlenborg, N. Sets and intersections. Nat Methods 11, 779 (2014).
- A. Lex, N. Gehlenborg, H. Strobelt, R. Vuillemot and H. Pfister, "UpSet: Visualization of Intersecting Sets," in IEEE Transactions on Visualization and Computer Graphics, vol. 20, no. 12, pp. 1983-1992, 31 Dec. 2014.
- Conway J R, Lex A, Gehlenborg N. UpSetR: an R package for the visualization of intersecting sets and their properties[J]. Bioinformatics, 2017, 33(18): 2938-2940.