分析背景
????提到集合的可視化,大家第一時(shí)間想到的是用Venn圖來(lái)展示,在前期的推文中,小編也給大家分享了venn圖的繪制方法。然而,值得一提的是,小編分享的方法是基于R語(yǔ)言,并將根據(jù)項(xiàng)目經(jīng)驗(yàn),將常規(guī)的代碼語(yǔ)句進(jìn)行封裝,對(duì)于剛?cè)腴T(mén)的小白來(lái)說(shuō),只需要整理好自己的數(shù)據(jù),將數(shù)據(jù)傳入到函數(shù)中,即可得到高質(zhì)量的Venn圖,方面快捷,省時(shí)省力。但是,當(dāng)集合數(shù)多比如 7個(gè)以上的時(shí)候那就會(huì)看的眼花繚亂了。
????針對(duì)上面這種情況,小編今天可大家編寫(xiě)了一個(gè)用于多個(gè)集合數(shù)據(jù)可視化小程序——集合圖,并且小編已經(jīng)將其封裝成函數(shù),小伙伴們只需將自己的數(shù)據(jù)傳入到函數(shù)中,即可做出高質(zhì)量的圖片,保存下來(lái),AI編輯一下,就可以插入到自己的論文寫(xiě)作中,話不多說(shuō),直接上腳本!

分析方法
# 安裝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/")
# 自定義函數(shù)
## 快速讀入數(shù)據(jù)
readFlie=function(input,type,row=T,header=T){
# input 為讀入文件的路徑,type為讀入文件的類型,格式為‘.txt’或‘.csv’,row=T,將文件的第一列設(shè)置為列名
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)
}

閱讀原文,獲取腳本源碼和測(cè)試數(shù)據(jù)。
實(shí)戰(zhàn)演練
df = readFlie('./upset.txt',type = 'txt',row = F)
# 抽取數(shù)據(jù),制造測(cè)試數(shù)據(jù)
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()
參考文獻(xiàn)
- 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.