R语言绘制韦恩图

前言

本篇是R包ggvenn绘制韦恩图的教程,该包可以绘制2-4之间的样本

什么是韦恩图?

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

绘图前的数据准备

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

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

R语言绘制韦恩图

绘图

# 代码来源:https://www.r2omics.cn/
# 加载R包,没有安装请先安装  install.packages("包名")
library(ggvenn)

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

# 绘图
ggvenn(
  data = venn_list,         # 数据列表
  columns = NULL,           # 对选中的列名绘图,最多选择4个,NULL为默认全选
  show_elements = F,        # 当为TRUE时,显示具体的交集情况,而不是交集个数
  label_sep = "\n",         # 当show_elements = T时生效,分隔符 \n 表示的是回车的意思
  show_percentage = T,      # 显示每一组的百分比
  digits = 1,               # 百分比的小数点位数
  fill_color = c("#E41A1C", "#1E90FF", "#FF8C00", "#80FF00"), # 填充颜色
  fill_alpha = 0.5,         # 填充透明度
  stroke_color = "white",   # 边缘颜色
  stroke_alpha = 0.5,       # 边缘透明度
  stroke_size = 0.5,        # 边缘粗细
  stroke_linetype = "solid", # 边缘线条 # 实线:solid  虚线:twodash longdash 点:dotdash dotted dashed  无:blank
  set_name_color = "black", # 组名颜色
  set_name_size = 6,        # 组名大小
  text_color = "black",     # 交集个数颜色
  text_size = 4             # 交集个数文字大小
)

导出交集详情表格

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)