该内容已被发布者删除 该内容被自由微信恢复
文章于 4月1日 上午 9:10 被检测为删除。
查看原文
被用户删除
其他

R语言绘图 | 使用ggVennDiagram绘制韦恩图

小陈的R语言笔记 小陈的R语言笔記 2024-04-01

韦恩图

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

大家有兴趣可以加群,可以在群里讨论,学习,共同进步!




继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存