1.概念
韦恩图(Venn diagram),也叫温氏图、维恩图、范氏图,用于显示元素集合重叠区域的图表(见图4-9-1)。韦恩图是关系型图表,通过图形与图形之间的层叠关系,来表示集合与集合之间的相交关系。每个集合通常以一个圆圈表示。每个集合都是一组具有共同之处的物件或数据。当多个圆圈(集)相互重叠时,称为交集(intersection),里面的数据同时具有重叠集中的所有属性。
一个完整的韦恩图包含以下构成元素:①若干个圆表示集合;②若干个圆的层叠部分表示公有集合;③内部文本标签。一般来说,超过5个集合的场景,不适合使用韦恩图。
适合场景1:表示两个集合相交关系,有一个集合A,有一个集合B,相交集合为C。有两个维度数据,其中,分类数据映射集合名,关系数据映射集合关系。
适合场景2:表示3个集合相交关系,有集合A、B、C。有两个维度数据,其中,分类数据映射集合名,关系数据映射集合关系。
适合场景3:表示4个集合相交关系,有集合A、B、C、D。有两个维度数据,其中,分类数据映射集合名,关系数据映射集合关系。
绘制韦恩图
R中VennDiagram包的Venn.Diagram()函数、gplots包的Venn()函数、limma包VennDiagram()函数、Venneuler包的Venneuler()函数都可以绘制韦恩图,但是以VennDiagram包的Venn.Diagram()函数绘制的韦恩图效果最佳,具体实现代码如下所示。
library(VennDiagram)
library(RColorBrewer)
venn.diagram(list(B = 1:1800, A = 1571:2020,c=500:1100),fill = c(brewer.pal(7,"Set1")[1:3]),
alpha = c(0.5, 0.5,0.5), cex = 2,
cat.cex=3,cat.fontface = 4,lty =2, fontfamily =3,
resolution =300, filename = "trial2.tiff")
2.示例代码和效果图
library(tidyverse)
library(ggvenn)
setwd('G:\\rwork')
group <- read.delim("group.xls")
df <- read.delim("otu.xls",check.names=F) %>%
as_tibble() %>% pivot_longer(-ASV) %>%
filter(value !=0) %>% rename(sample=name)
#共4个处理,每个处理三个重复,求平均值,
A <- df %>% filter(sample=="A_1")
B <- df %>% filter(sample=="B_1")
C <- df %>% filter(sample=="C_1")
D <- df %>% filter(sample=="D_1")
list(E=E$ASV,O=O$ASV,g=g$ASV,b=b$ASV) %>%
ggvenn(show_percentage = T,show_elements = F,label_sep = ",",
digits = 1,stroke_color = "white",stroke_alpha=1,
# stroke_linetype="dashed",
fill_color = c("#E41A1C", "#1E90FF", "#FF8C00",
"#4DAF4A"),
set_name_color = c("#E41A1C", "#1E90FF","#FF8C00","#4DAF4A"))
ggsave("venn.pdf",width=10,height=8)
ggsave("venn.png",width=10,height=8)
ggsave("venn.pptx",width=10,height=8)