R语言绘制韦恩图

前言

本篇是R包venn绘制韦恩图的教程,该包可以绘制7个样本。

什么是韦恩图?

韦恩图(Venn Diagram)是一种用于展示集合之间关系的图形工具。它通过重叠的圆形来表示不同集合及其交集。每个圆代表一个集合,圆与圆之间的重叠部分则表示这些集合的交集。

绘图前的数据准备

​demo数据可以在https://www.r2omics.cn/res/demodata/venn.txt下载。

第一行为组名,必须要有,会出现在图中。每一列都是一个分组,下面的是分组里具体的内容。

R语言绘制韦恩图

绘图

# 代码来源:https://www.r2omics.cn/
# 加载R包,没有安装请先安装  install.packages("包名") 
library(venn)         #韦恩图(venn 包,适用样本数 2-7)

# 读取数据文件
venn_dat <- read.delim('https://www.r2omics.cn/res/demodata/venn.txt') #这里读取了网络上的demo数据,将此处换成你自己电脑里的文件
venn_list <- list(venn_dat[,1], venn_dat[,2], venn_dat[,3], venn_dat[,4], venn_dat[,5], venn_dat[,6], venn_dat[,7])   # 制作韦恩图搜所需要的列表文件
names(venn_list) <- colnames(venn_dat[1:7])    # 把列名赋值给列表的key值
venn_list = purrr::map(venn_list,na.omit)      # 删除列表中每个向量中的NA
venn_list <- purrr::map(venn_list, function(x){x[x!=""]}) # 删除列表中每个向量中的""

#作图
venn(venn_list,
     # ilabels="counts", # venn V1.11版本,需要在venn函数里面添加`ilabels="counts"`参数,否则不显示数字。
     zcolor='style',    # 调整颜色,style是默认颜色,bw是无颜色,当然也可以自定义颜色
     opacity = 0.3,     # 调整颜色透明度
     box = F,           # 是否添加边框
     ilcs = 0.5,        # 数字大小
     sncs = 1           # 组名字体大小
     )

备注:venn V1.11版本,需要在venn函数里面添加`ilabels=“counts”`参数,否则不显示数字。而venn V1.10,则不能添加。

导出交集详情表格

library(VennDiagram) 
# 查看交集详情,并导出结果
inter <- get.venn.partitions(venn_list)
for (i in 1:nrow(inter)) inter[i,'values'] <- paste(inter[[i,'..values..']], collapse = '|')
inter <- subset(inter, select = -..values.. )
inter <- subset(inter, select = -..set.. )
head(inter)
write.table(inter, "result.csv", row.names = FALSE, sep = ',', quote = FALSE)