R语言绘图 | 使用ggVennDiagram绘制韦恩图
韦恩图
Venn 图(也被称为韦恩图)是一种用于可视化集合之间交集和差异的图表类型。它通常用于展示几个集合之间的元素关系。Venn 图的特点是由一系列交叠的圆形或椭圆形表示集合,其中每个圆形或椭圆形代表一个集合,而它们的交集部分表示这些集合之间的共同元素。
基本的Venn 图具有两个或三个圆形,每个圆形表示一个集合。在两个集合的情况下,Venn 图显示两个圆形的交集和每个集合的独特部分。在三个集合的情况下,Venn 图则显示三个圆形的交集以及每个集合的独特部分。
Venn 图的解释通常涉及以下元素:
交集区域(Overlap): 位于两个或多个集合的交汇处,表示这些集合共同拥有的元素。
每个集合的独特区域(Unique Regions): 位于各个集合圆形之外,表示该集合独有的元素。
数字标签(Optional): 可以在图中的各个区域添加数字标签,表示每个区域中元素的数量。
韦恩图可以帮助观察者直观地了解集合之间的关系,包括重叠和独特的元素数量。它在生物学、统计学、信息科学等领域广泛应用,特别是在分析基因组、生物数据、集合关系等方面。在R中,ggVennDiagram等包提供了创建和定制Venn图的工具。
准备
##安装r包
install.packages("ggplot2")
install.packages("ggVennDiagram")
##加载r包
library(ggplot2)
library(ggVennDiagram)
绘图
数据:
##数据(随机生成的数据,无实际意义)
# 生成包含1000个基因名称的字符串向量,形式为"gene1", "gene2", ..., "gene1000"
genes <- paste("gene", 1:1000, sep="")
# 设置随机数生成种子,确保结果的可重复性
set.seed(20231214)
# 从基因名称中随机抽取不同数量的基因,生成四个命名列表(A、B、C、D)
x <- list(A=sample(genes, 300),
B=sample(genes, 525),
C=sample(genes, 440),
D=sample(genes, 350))
scale_fill_gradient
设置图的填充颜色
# 使用 ggVennDiagram 函数创建基因集的 Venn 图
ggVennDiagram(x) +
# 使用 scale_fill_gradient 函数设置图的填充颜色为渐变色,从灰色到红色
scale_fill_gradient(low = "grey90",high = "red")
set_color
设置每个集合的颜色
# 设置每个集合的颜色
ggVennDiagram(x, set_color = c("blue", "red", "green", "purple"))
category.names
设置每个集合的类别名称
# 设置每个集合的类别名称
ggVennDiagram(x, category.names = c("Stage 1", "Stage 2", "Stage 3", "Stage 4"))
label = "none"
禁用标签显示
# 设置每个集合的类别名称,并禁用标签显示
ggVennDiagram(x, category.names = c("Stage 1", "Stage 2", "Stage 3", "Stage 4"),
label = "none")
label_alpha
设置标签透明度
# 将标签透明度设置为 0,即不显示标签
ggVennDiagram(x, label_alpha = 0)
process_region_data
获取交集值
# 创建包含四个列表的数据集,每个列表包含从字母 'a' 到 'z' 中随机抽取的8个元素
y <- list(
A = sample(letters, 8),
B = sample(letters, 8),
C = sample(letters, 8),
D = sample(letters, 8)
)
# 使用 Venn 函数创建 Venn 图数据集,然后通过 process_region_data 函数处理数据
process_region_data(Venn(y))
# 显示交集区域
ggVennDiagram(y, show_intersect = TRUE)
创建二维到七维的韦恩图
# 生成包含1000个基因名称的字符串向量
genes <- paste("gene", 1:1000, sep="")
# 生成一个包含七个子集的基因列表 'x',每个子集包含不同数量的随机基因
x <- list(
A = sample(genes, 300),
B = sample(genes, 525),
C = sample(genes, 440),
D = sample(genes, 350),
E = sample(genes, 200),
F = sample(genes, 150),
G = sample(genes, 100)
)
# 创建一个包含两个子集的二维 Venn 图,禁用标签显示
ggVennDiagram(x[1:2], label = "none")
# 创建一个包含三个子集的三维 Venn 图,禁用标签显示
ggVennDiagram(x[1:3], label = "none")
# 创建一个包含四个子集的四维 Venn 图,禁用标签显示
ggVennDiagram(x[1:4], label = "none")
# 创建一个包含五个子集的五维 Venn 图,禁用标签显示
ggVennDiagram(x[1:5], label = "none")
# 创建一个包含六个子集的六维 Venn 图,禁用标签显示
ggVennDiagram(x[1:6], label = "none")
# 创建一个包含七个子集的七维 Venn 图,禁用标签显示
ggVennDiagram(x, label = "none")
参考资料:https://github.com/gaospecial/ggVennDiagram?tab=readme-ov-file
大家有兴趣可以加群,可以在群里讨论,学习,共同进步!