R包VennDiagram的韋恩圖繪制及交集元素的提取

韋恩(Venn)圖是常見(jiàn)統(tǒng)計(jì)圖之一,用于展示各樣本(或分組)之間共有(或特有)元素的數(shù)量(或比例)。

例如做RNA-seq的最直接目的,大多是鑒定差異表達(dá)的基因。當(dāng)試驗(yàn)涉及到多分組情況時(shí),常需要展示多組間共享的差異基因數(shù)量,這個(gè)時(shí)候就要使用到韋恩Venn圖。例如以下示例,植物組織中響應(yīng)7天氮缺乏(-N_7d)、7天磷酸鹽缺乏(-Pi_7d)和鹽脅迫(d)、冷脅迫(e)或干旱脅迫(f)的差異表達(dá)lncRNA的Venn圖。

文獻(xiàn)中的韋恩圖示例

文獻(xiàn)中通常提到,這些Venn圖一般通過(guò)一些R包(如VennDiagram)來(lái)做。

本篇教程,就讓小編帶您學(xué)習(xí)如何使用R包VennDiagram繪制Venn圖,以及如何統(tǒng)計(jì)各組元素的交集。

準(zhǔn)備作圖數(shù)據(jù)

首先準(zhǔn)備輸入數(shù)據(jù)。既然期望比較各組共有/特有元素,那么就可以將各組中所包含的元素提取出來(lái),粘貼到一個(gè)新的列表中。

如下圖示例,一共包含4個(gè)分組,group1-4,下方是各組中所包含的元素名稱。各列不等長(zhǎng)沒(méi)關(guān)系,某一列內(nèi)有重復(fù)的值也沒(méi)關(guān)系,后續(xù)讀到R中后能夠自動(dòng)識(shí)別并去除空值或重復(fù)值。

韋恩圖作圖文件內(nèi)容樣式

R包VennDiagram的韋恩圖繪制

接下來(lái),將該文件讀到R中,繪制Venn圖。

VennDiagram包中的函數(shù)venn.diagram(),可以直接基于原始數(shù)據(jù)自動(dòng)統(tǒng)計(jì)并繪制Venn圖。

#韋恩圖(VennDiagram 包,適用樣本數(shù) 2-5)
library(VennDiagram)

#讀入作圖文件,all.txt即上述提到的記錄group1-4的元素名稱的文件
dat <- read.table('all.txt', header = TRUE, sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)

#以2個(gè)分組為例
#指定統(tǒng)計(jì)的分組列,并設(shè)置作圖顏色、字體樣式等
venn_list <- list(group1 = dat$group1, group2 = dat$group2)

venn.diagram(venn_list, filename = 'venn2.png', imagetype = 'png', 
    fill = c('red', 'blue'), alpha = 0.50, cat.col = rep('black', 2), 
    col = 'black', cex = 1.5, fontfamily = 'serif', 
    cat.cex = 1.5, cat.fontfamily = 'serif')
兩組交集韋恩圖

工作路徑下輸出一張圖片“venn2.png”,打開(kāi)就是繪制的Venn圖。

這是展示的兩組的,再展示一個(gè)四組比較的。

#以4個(gè)分組為例
#指定統(tǒng)計(jì)的分組列,并設(shè)置作圖顏色、字體樣式等
venn_list <- list(group1 = dat$group1, group2 = dat$group2, group3 = dat$group3, group4 = dat$group4)

venn.diagram(venn_list, filename = 'venn4.png', imagetype = 'png', 
    fill = c('red', 'blue', 'green', 'orange'), alpha = 0.50, 
    cat.col = c('red', 'blue', 'green', 'orange'), cat.cex = 1.5, cat.fontfamily = 'serif',
    col = c('red', 'blue', 'green', 'orange'), cex = 1.5, fontfamily = 'serif')
四組交集韋恩圖

同樣地,工作路徑下輸出一張圖片“venn4.png”,打開(kāi)就是繪制的Venn圖。

關(guān)于交集元素的提取方法

以上自動(dòng)讀取原始數(shù)據(jù),并統(tǒng)計(jì)各組之間的交集狀態(tài),獲取共有元素的數(shù)量信息后,繪制Venn圖,整個(gè)過(guò)程一氣呵成。

但是,如果期望獲得各組之間的交集元素具體包含哪些,并將這些交集元素的名稱輸出出來(lái),應(yīng)該怎樣做呢?

VennDiagram包中的函數(shù)get.venn.partitions()可以實(shí)現(xiàn)這個(gè)功能,參考以下示例。

#繼續(xù)以上述4個(gè)分組為例,組間交集元素獲得
inter <- get.venn.partitions(venn_list)
for (i in 1:nrow(inter)) inter[i,'values'] <- paste(inter[[i,'..values..']], collapse = ', ')
write.table(inter[-c(5, 6)], 'venn4_inter.txt', row.names = FALSE, sep = '\t', quote = FALSE)
輸出交集元素名稱

工作路徑下輸出文件“venn4_inter.txt”,可以用Excel打開(kāi)。

group1-4中,TRUE代表該組中出現(xiàn)的元素,F(xiàn)ALSE則代表未出現(xiàn)的元素。

count為交集元素?cái)?shù)量,values為交集元素名稱。

?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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