# 安装包
if (!requireNamespace("VennDiagram", quietly = TRUE)) {
install.packages("VennDiagram")
}if (!requireNamespace("grDevices", quietly = TRUE)) {
install.packages("grDevices")
}
# 加载包
library(VennDiagram)
library(grDevices)
韦恩图
注记
Hiplot 网站
本页面为 Hiplot Venn
插件的源码版本教程,您也可以使用 Hiplot 网站实现无代码绘图,更多信息请查看以下链接:
维恩图是一种表示不同有限集合之间所有可能的逻辑关系的图。这些图将集合内元素描述为平面上的点,将集合描述为封闭曲线内的区域。维恩图由多个重叠的闭合曲线 (通常是圆) 组成,每个曲线代表一个集合。标记为S曲线内的点表示集合 S 中的元素,而边界外的点表示集合 S 中不存在的元素。例如,两个集合中的所有元素的交集,S∩T,在视觉上用集合 S 和 T 的重叠区域来表示。在维恩图中,曲线以各种可能的方式重叠,显示了集合之间所有可能的关系。
环境配置
系统: Cross-platform (Linux/MacOS/Windows)
编程语言: R
依赖包:
VennDiagram
;grDevices
数据准备
载入数据为 5 个含有基因名称的集合。
# 加载数据
<- read.delim("files/Hiplot/178-venn-data.txt", header = T)
data
# 整理数据格式
for (i in seq_len(ncol(data))) {
is.na(data[, i]), i] <- ""
data[
}<- data
raw <- as.data.frame(raw[raw[, 1] != "", 1])
data colnames(data) <- colnames(raw)[1]
<- 1
list.num for (i in 2:ncol(raw)) {
if (any(!is.na(raw[, i]) & raw[, i] != "")) {
<- raw[i]
tmp <- tmp[tmp[, 1] != "", ]
tmp <- as.data.frame(tmp)
tmp colnames(tmp) <- colnames(raw)[i]
assign(paste0("data", i), tmp)
<- list.num + 1
list.num
}
}colnames(data) <- paste("V", seq_len(ncol(data)), sep = "")
colnames(data2) <- paste("V", seq_len(ncol(data2)), sep = "")
colnames(data3) <- paste("V", seq_len(ncol(data3)), sep = "")
colnames(data4) <- paste("V", seq_len(ncol(data4)), sep = "")
colnames(data5) <- paste("V", seq_len(ncol(data5)), sep = "")
<- list(
data_list n1 = data$V1, n2 = data2$V1, n3 = data3$V1,
n4 = data4$V1, n5 = data5$V1
)names(data_list) <- colnames(raw)[1:5]
# 查看数据
head(data)
V1
1 ISG15
2 TTLL10
3 HES4
4 OR4G4P
5 MND2P28
6 FAM87B
可视化
# 韦恩图
<- c("#E64B35FF","#4DBBD5FF","#00A087FF","#3C5488FF","#F39B7FFF")
col <- venn.diagram(
p scaled = F, euler.d = F, filename = NULL, col = "black",
data_list, fill = col,
cex = c(
1.5, 1.5, 1.5, 1.5, 1.5, 1, 0.8, 1, 0.8, 1, 0.8, 1, 0.8,
1, 0.8, 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 1, 1, 1, 1, 1.5
),cat.col = col, cat.cex = 1,
main.fontfamily = "Arial", fontfamily = "Arial", cat.fontface = "bold",
cat.fontfamily = "Arial", margin = 0.1, main = "Vene Plot", alpha = 0.8
::grid.draw(p) );grid

5 种颜色的闭合曲线代表 5 个集合,数字表示多个集合重叠或者未重叠的基因数,例如:示例图中 8 代表 5 个示例集合中均含有 8 个相同的基因名称。