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

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

Vennerable包

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

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

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

## 使用西湖大学的 Bioconductor镜像
options(BioC_mirror="https://mirrors./bioconductor")
options("repos"=c(CRAN="https://mirrors./CRAN/"))
library(devtools)
install_github("js229/Vennerable")
library(Vennerable)
vignette("Venn")

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

## 四个基因列表集合
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:两个交集共有

三个列表的

## 三个韦恩图
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 包

这里就看看四个列表的吧:

#韦恩图(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)

每个集合的元素:

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