其他
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)
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)]
}
绘图
#Venn包绘制
venn(df1, #数据
zcolor=c('red','yellow','blue','green'),#颜色设置,可选择自带的“style”或者无色‘bw’
opacity = 0.5,#颜色透明度
box=F,#边框去除
sncs=1.5,#组名字体大小
ilcs=0.8)#图片中数字大小
提取交集元素
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)
参考:https://www.jianshu.com/p/b5a4c40c3a33
爱我请给我好看!