R可视化——Venn图绘制及交集元素导出

韦恩图(Venn)是一种用于展示各样本之间共有或特有元素数量的图形。今天,小编就结合R语言中的Venn包和VennDiagram包给大家展示一下如何绘制Venn图并导出其中的交集元素!

安装并加载R包

rm(list=ls())#clear Global Environment
setwd('D:\\桌面\\Venn')#设置工作路径

#安装包
#install.packages("venn")
# install.packages("VennDiagram")
#加载R包
library(VennDiagram) 
library (venn)

加载并处理数据

1、加载数据
#加载数据,为OTU水平的丰度表
data <- read.table(file="otu.txt",sep="\t",header=T,check.names=FALSE,row.names = 1)
image.png
2、处理数据
#组内合并
df <- data.frame(A=rowSums(data[,c(1:3)]),
                 B=rowSums(data[,c(4:6)]),
                 C=rowSums(data[,c(7:9)]),
                 D=rowSums(data[,c(10:12)]))
head(df)
#创建空列表
df1 <- list()
#获取每个样本(组)中所有的OTU
for (i in 1:length(colnames(df))){
  group<- colnames(df)[i]
  df1[[group]] <- rownames(df)[which(df[,i]!= 0)]
}
image.png

绘图

#Venn包绘制
venn(df1, #数据
     zcolor=c('red','yellow','blue','green'),#颜色设置,可选择自带的“style”或者无色‘bw’
     opacity = 0.5,#颜色透明度
     box=F,#边框去除
     sncs=1.5,#组名字体大小
     ilcs=0.8)#图片中数字大小
image.png

提取交集元素

使用VennDiagram包中的get.venn.partitions函数查看并导出交集结果:

df_inter <- get.venn.partitions(df1)
for (i in 1:nrow(df_inter)) df_inter[i,'values'] <- paste(df_inter[[i,'..values..']], collapse = ', ')
df_inter[-c(5, 6)]
write.table(df_inter, 'df_Venn.txt', row.names = FALSE, sep = '\t', quote = FALSE)
image.png
参考:https://www.jianshu.com/p/b5a4c40c3a33

你可能感兴趣的:(R可视化——Venn图绘制及交集元素导出)