實用科研工具推薦 、詳實生信軟體教程分享、前沿創新組學文章解讀、獨家生信影片教程釋出,歡迎關注微信公眾號:

基迪奧生物 (

gene-denovo

| 本文作者:莫北

之前在微信文章中的《如何繪製漂亮的“花瓣”韋恩圖?》和《介紹一種簡單的韋恩圖繪製方法》已經為大家介紹如何用OmicShare tools和Origin繪製韋恩圖,今天再為大家介紹下如何用R語言的VennDiagram包繪製韋恩圖。

#安裝載入VennDiagram包;

install。packages(“VennDiagram”)

#載入VennDiagram包;

library

(VennDiagram)

#讀入資料;

data

= read。table(“venndata。txt”,header =TRUE,row=1,sep=“\t”)

head(data)

R語言教程|如何繪製韋恩圖?

#獲取行名;

otus =

rownames(data)

head

(otus)

#獲取列名;

sets =

colnames(data)

sets

R語言教程|如何繪製韋恩圖?

#指定比較組,以"_"分隔;

option =“MO-MU-SJ-SA”

option

#獲取指定的新分組名稱;

newgroup =

unlist

(strsplit(option,“-”))

newgroup

R語言教程|如何繪製韋恩圖?

#生成空列表;

x =

list()

#將每個分組絕對丰度值大於0的otu id列表逐一存到列表x中,[]選取資料框、矩陣、向量中的元素,[[]]選取列表中的元素;

for(i in newgroup){

x[[i]]=otus[as。numeric(data[,i])>0]

}

#檢視列表x的結構;

str

(x)

R語言教程|如何繪製韋恩圖?

#載入個人收藏的wesanderson包顏色列表;

Chevalier1<-

c(

“#355243”,“#fbca50”,“#c9d5d4”,“#baa28a”)

FantasticFox1<-

c(

“#d37a20”,“#dbcb09”,“#3a9cbc”,“#dd7208”,“#a30019”)

Moonrise3<-

c(

“#75cbdc”,“#f0a4af”,“#8a863a”,“#c2b479”,“#f8d068”

)

Cavalcanti1<-

c(

“#ceab0d”,“#083215”,“#919562”,“#6f997a”,“#831e11”

)

Darjeeling2<-

c(

“#e6c09e”,“#0d5888”,“#cb8b3e”,“#9cd6d6”,“#000000”

)

Darjeeling1<-

c(

“#fb0007”,“#139177”,“#ed9e08”,“#f56f08”,“#4caecc”

)

Royal2<-

c(

“#e4c9b2”,“#f1c2a5”,“#f49d98”,“#fcd68f”,“#629076”

)

IsleofDogs2<-

c(

“#e4c9b2”,“#998273”,“#a6723d”,“#2b2523”,“#151213”

)

#設定顏色列表,因為最多隻能畫五個分組的韋恩圖,這裡最多設定5種顏色;

color_list = Darjeeling1

#依照指定的新分組數選取顏色列;

fill_colors = color_list[1:

length

(x)]

fill_colors

R語言教程|如何繪製韋恩圖?

#獲取系統日期;

date

<-Sys。Date()

date

#生成包含日期的檔名,paste()函式用於字串粘合,strsplit()的逆操作;

filename =

paste

(option,“-”,

date

,“。venn。tiff”,sep=“”)

filename

R語言教程|如何繪製韋恩圖?

#繪製韋恩圖,並匯出到工作目錄;

venn。diagram(x,

col

=“white”,fill=fill_colors,lwd=。5,filename=filename,cex=。5,cat。cex=。5,width=1200,height=1200)

最終結果如下:

R語言教程|如何繪製韋恩圖?

以上的內容是以繪製4組資料的韋恩圖為例,在指定比較組的那一步,可根據自己的資料自由指定分組(<6組)。例如,當option = “MU-SJ-SA”時,即可得到這3列資料(分組)的韋恩圖,如下:

R語言教程|如何繪製韋恩圖?

你甚至還可以嘗試其他配色方案,如下圖,得到令自己滿意的配色。

R語言教程|如何繪製韋恩圖?