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

韋恩(Venn)圖是常見統計圖之一,用於展示各樣本(或分組)之間共有(或特有)元素的數量(或比例)。

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

文獻中的韋恩圖示例

文獻中通常提到,這些Venn圖一般透過一些R包(如VennDiagram)來做。

本篇教程,就讓小編帶您學習如何使用R包VennDiagram繪製Venn圖,以及如何統計各組元素的交集。

準備作圖資料

首先準備輸入資料。既然期望比較各組共有/特有元素,那麼就可以將各組中所包含的元素提取出來,貼上到一個新的列表中。

如下圖示例,一共包含4個分組,group1-4,下方是各組中所包含的元素名稱。各列不等長沒關係,某一列內有重複的值也沒關係,後續讀到R中後能夠自動識別並去除空值或重複值。

韋恩圖作圖檔案內容樣式R包VennDiagram的韋恩圖繪製

接下來,將該檔案讀到R中,繪製Venn圖。

VennDiagram包中的函式venn。diagram(),可以直接基於原始資料自動統計並繪製Venn圖。

#韋恩圖(VennDiagram 包,適用樣本數 2-5) library(VennDiagram) #讀入作圖檔案,all。txt即上述提到的記錄group1-4的元素名稱的檔案 dat <- read。table(‘all。txt’, header = TRUE, sep = ‘\t’, stringsAsFactors = FALSE, check。names = FALSE) #以2個分組為例 #指定統計的分組列,並設定作圖顏色、字型樣式等 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”,開啟就是繪製的Venn圖。

這是展示的兩組的,再展示一個四組比較的。

#以4個分組為例 #指定統計的分組列,並設定作圖顏色、字型樣式等 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”,開啟就是繪製的Venn圖。

關於交集元素的提取方法

以上自動讀取原始資料,並統計各組之間的交集狀態,獲取共有元素的數量資訊後,繪製Venn圖,整個過程一氣呵成。

但是,如果期望獲得各組之間的交集元素具體包含哪些,並將這些交集元素的名稱輸出出來,應該怎樣做呢?

VennDiagram包中的函式get。venn。partitions()可以實現這個功能,參考以下示例。

#繼續以上述4個分組為例,組間交集元素獲得 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開啟。

group1-4中,TRUE代表該組中出現的元素,FALSE則代表未出現的元素。

count為交集元素數量,values為交集元素名稱。