快速繪制Upset圖

分析背景

????提到集合的可視化,大家第一時(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.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容