一、画Venn diagram
1、依赖包
library(venn)
2、安装venn包
(1)方式一:直接使用install.packages
install.packages(venn)
(2)方式二:在Index of /src/contrib/Archive下载离线安装包,然后通过Rstudio->Tools->Install Packages->Browse选中本地离线安装包
3、画venn图
library(venn)
# 随机初始化数据集
rand_1 <- sample(1:1000, 400, replace = FALSE);
rand_2 <- sample(1:1000, 600, replace = FALSE);
rand_3 <- sample(1:1000, 350, replace = FALSE);
rand_4 <- sample(1:1000, 550, replace = FALSE);
rand_5 <- sample(1:1000, 375, replace = FALSE);
rand_6 <- sample(1:1000, 200, replace = FALSE);
dataForVennDiagram <- list(
rand_1,
rand_2,
rand_3,
rand_4,
rand_5,
rand_6
)
# 画venn diagram
venn(
dataForVennDiagram,
snames = c("r-1", "r-2", "r-3", "r-4", "r-5", "r-6"), # 重命令
zcolor = "style", # add color
opacity = 0.25,
ellipse = F
)
4、Venn效果图
注意:画出这种效果一般要求集合至少6个,如果集合小于5个,美观度没有这个好
5、使用VennDiagram包画Venn图(适用于3-4个集合)
(1)安装VennDiagram
# 安装 VennDiagram 包(如果尚未安装)
install.packages("VennDiagram")
(2)画Venn图
# 加载 VennDiagram 包
library(VennDiagram)
# 随机初始化数据集
set.seed(123) # 为了结果可重复
rand_1 <- sample(1:1000, 400, replace = FALSE)
rand_2 <- sample(1:1000, 600, replace = FALSE)
rand_3 <- sample(1:1000, 350, replace = FALSE)
dataForVennDiagram <- list(
"Set1" = rand_1,
"Set2" = rand_2,
"Set3" = rand_3
)
# 计算交集大小
library(eulerr)
fit <- euler(dataForVennDiagram)
# 绘制Venn图
venn.plot <- draw.triple.venn(
area1 = length(dataForVennDiagram[[1]]),
area2 = length(dataForVennDiagram[[2]]),
area3 = length(dataForVennDiagram[[3]]),
n12 = length(intersect(dataForVennDiagram[[1]], dataForVennDiagram[[2]])),
n23 = length(intersect(dataForVennDiagram[[2]], dataForVennDiagram[[3]])),
n13 = length(intersect(dataForVennDiagram[[1]], dataForVennDiagram[[3]])),
n123 = length(Reduce(intersect, dataForVennDiagram)),
category = c("Set1", "Set2", "Set3"),
fill = c("blue", "yellow", "green"),
lty = "blank",
cex = 2, # 数字大小
cat.cex = 2, # 分类标签大小
cat.col = c("blue", "yellow", "green"), # 分类标签颜色
label.col = "red", # 数字颜色
fontface = "bold" # 数字字体加粗
)
# 在R的绘图窗口中显示Venn图
grid.draw(venn.plot)
# 保存Venn图到PNG文件
png(filename = "venn_diagram.png", width = 800, height = 800)
grid.draw(venn.plot)
dev.off()