首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何获取韦恩图中的交集部分元素列表?

如何获取韦恩图中的交集部分元素列表?

作者头像
生信技能树
发布2025-07-20 09:59:52
发布2025-07-20 09:59:52
14100
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

前几天画了专辑中没有的韦恩图,见:Science杂志同款:高颜值韦恩图绘制细节调整。又有一个人问:这个韦恩图里面现在只能看到数字,如何获取数字交集对应的基因或者分子等特征的列表呢?下面来看看~

插播:我们生信技能树每个月都有一期带领初学者,0基础的生信入门培训,会有各种贴心的答疑,最新一期在8月4号,感兴趣的可以去看看呀:生信入门&数据挖掘线上直播课8月班

我简单搜索了一下,有现成的两个包可以直接提取每一个交集部分的元素!

Vennerable包

这个包的功能非常强大,可以绘制各种稀奇古怪形状的韦恩图,地址:

https://github.com/js229/Vennerable/tree/master

他的示例教程在安装后使用 vignette("Venn")查看,只有这个途径看示例代码

代码语言:javascript
代码运行次数:0
运行
复制
## 使用西湖大学的 Bioconductor镜像
options(BioC_mirror="https://mirrors.westlake.edu.cn/bioconductor")
options("repos"=c(CRAN="https://mirrors.westlake.edu.cn/CRAN/"))
library(devtools)
install_github("js229/Vennerable")
library(Vennerable)
vignette("Venn")

画两个集合的韦恩图并获取数据:

代码语言:javascript
代码运行次数:0
运行
复制
## 四个基因列表集合
data(StemCell)
str(StemCell)

# List of 4
# $ OCT4 : chr [1:623] "AASDH" "ABTB2" "ACCN4" "ACD" ...
# $ SOX2 : chr [1:1279] "182-FIP" "AASDH" "ABCA5" "ABCB10" ...
# $ NANOG: chr [1:1687] "13CDNA73" "AASDH" "ABCA5" "ABCB10" ...
# $ E2F4 : chr [1:1273] "76P" "7h3" "AAMP" "AATF" ...

Vstem4 <- Venn(StemCell,SetNames=names(StemCell))
Vstem4

Vstem3 <- Vstem4[, c("OCT4", "SOX2", "NANOG")]
Vstem3

# 两个韦恩图
Vstem2 <- Vstem4[, c("OCT4", "SOX2")]
Vstem2
# 画图
plot(Vstem2, doWeights = TRUE)

C2 <- compute.Venn(Vstem2, doWeights = TRUE)
set <- C2@IntersectionSets
str(set)
library(GSEAtopics)
set1 <- list_to_data_frame(set)
# 这样就得到了 每个集合的元素啦
# 两种格式任意选择:list与数据框
head(set1)

根据集合名字和数字很快就可以找到每个集合对应的元素列表:

  • 00:两个交集的并集
  • 10:OCT4特有
  • 01:SOX2特有
  • 11:两个交集共有

三个集合的

代码语言:javascript
代码运行次数:0
运行
复制
## 三个韦恩图
Vstem3 <- Vstem4[, c("OCT4", "SOX2", "NANOG")]
Vstem3
# 画图
plot(Vstem3, doWeights = TRUE)

C3 <- compute.Venn(Vstem3, doWeights = TRUE)
set <- C3@IntersectionSets
str(set)
library(GSEAtopics)
set1 <- list_to_data_frame(set)
# 这样就得到了 每个集合的元素啦
# 两种格式任意选择:list与数据框
head(set1)

四个集合的各位可以试试看!哈哈哈哈~

VennDiagram 包

这里就看看四个集合的吧:

代码语言:javascript
代码运行次数:0
运行
复制
#韦恩图(VennDiagram 包,适用样本数 2-5)
library(VennDiagram)
# 先绘图,四个的
p <- venn.diagram(StemCell, 
             filename = NULL, 
             fill = c("#ff7d82", "#9ad6e6","#c4dfa1","#b797cf"), 
             cat.col = c("#ff7d82", "#9ad6e6","#c4dfa1","#b797cf"),   # 设置类别标签的颜色
             imagetype = 'png', 
             alpha = 0.50, 
             cat.cex = 1.8, 
             cat.fontfamily = 'serif',
             cex = 1.5, 
             fontfamily = 'serif')
grid.newpage()
grid.draw(p)

# 获取交集
inter <- get.venn.partitions(StemCell)
head(inter)
inter$..values..[[1]]
inter$..set..[[1]]

set <- inter$..values..
names(set) <- inter$..set..
str(set)

library(GSEAtopics)
set1 <- list_to_data_frame(set)
# 这样就得到了 每个集合的元素啦
# 3种格式任意选择:list与数据框
head(set1)

每个集合的元素:

是不是很简单,今天分享到这~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Vennerable包
    • 画两个集合的韦恩图并获取数据:
    • 三个集合的
  • VennDiagram 包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档