用VennDiagram三分钟搞定韦恩图
点击蓝字 关注我们
什么是韦恩图,作用是怎样的?
作为重叠圆圈(通常为 2 或 3 个)的框架,维恩图旨在显示不同数据集之间的关系。这些插图早在 1800 年代后期就由数学家约翰·维恩 (John Venn) 普及,至今仍在广泛使用,但已扩展到涵盖各种背景。维恩图可以让您了解两组或更多组事物有哪些共同点,哪些元素对这些组中的一个或多个组来说是独一无二的,以及这些组都没有表现出哪些特征。
、
安装R包
#安装加载VennDiagram包;
install.packages("VennDiagram")
#加载VennDiagram包;
library(VennDiagram)
数据载入
#读入数据,这里的数据大海哥已经放到附件中了,方便你们测试用
data= read.table("venn.txt",row.names = 1,header =T,sep="t")
head(data)
colnames(data) <- paste0("Set",1:6)
#粗略的绘制
venn.diagram(
x = list(data$Set1, data$Set2),
category.names = c("Set 1" , "Set 2 "),
filename = 'venn.png',
output=TRUE
)
#更加精细的绘制
venn.diagram(x=list(data$Set1, data$Set2),
scaled = F, # 根据比例显示大小
alpha= 0.5, #透明度
lwd=1,lty=1,col=c('#FFAADD','#CCFCCC'), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条
label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色
cex = 2, # 数字大小
fontface = "bold", # 字体粗细;加粗bold
fill=c('#FFAADD','#CCFCCC'), # 填充色
category.names = c("Set1", "Set2") , #标签名
cat.dist = 0.02, # 标签距离圆圈的远近
cat.pos = -180, # 标签相对于圆圈的角度cat.pos = c(-10, 10, 135)
cat.cex = 2, #标签字体大小
cat.fontface = "bold", # 标签字体加粗
cat.col='black' ,
cat.default.pos = "outer", # 标签位置, outer内;text 外
output=TRUE,
filename='./两组.png',# 文件保存
imagetype="png", # 类型(tiff png svg
resolution = 400, # 分辨率
compression = "lzw"# 压缩算法
)
这样我们对于初步的韦恩图绘制有了进一步的了解,那下面来进行3元Venn图的绘制叭~
#三元#
venn.diagram(x=list(data$Set1,data$Set2,data$Set3),
scaled = F, # 根据比例显示大小
alpha= 0.5, #透明度
lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF',"#FFCCCC"),
label.col ='black' , # 数字颜色
cex = 2, # 数字大小
fontface = "bold", # 字体粗细;加粗bold
fill=c('#FFFFCC','#CCFFFF',"#FFCCCC"), # 填充色
category.names = c("Set1", "Set2","Set3") , #标签名
cat.dist = 0.02, # 标签距离圆圈的远近
cat.pos = c(-120, -240, -180), # 标签相对于圆圈的角度cat.pos = c(-10, 10, 135)
cat.cex = 2, #标签字体大小
cat.fontface = "bold", # 标签字体加粗
cat.col='black' ,
cat.default.pos = "outer", # 标签位置, outer内;text 外
output=T,
filename='./三组.png',# 文件保存
imagetype="png", # 类型(tiff png svg)
resolution = 400, # 分辨率
)
#五元#
在作图中我们可以看到我们需要选择很多的颜色来修饰我们的图片,如果你对于颜色选择有困难可以尝试
install.packages("RColorBrewer")
library(RColorBrewer)
col <- RColorBrewer::brewer.pal(5,"Accent")#这里选择了Accent画板的5中颜色,你也可以根据自己的喜好进行选择。
venn.diagram(x=list(data$Set1,data$Set2,data$Set3,data$Set4,data$Set5),
scaled = F, # 根据比例显示大小
alpha= 0.5, #透明度
lwd=1,lty=1,col= col, #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条
label.col ='black' ,
cex = 2, # 数字大小
fontface = "bold", # 字体粗细;加粗bold
fill=col, # 填充色 配色https://www.58pic.com/
category.names = c("Set1", "Set2","Set3","Set4","Set5") , #标签名
cat.dist = c(0.2, 0.2, 0.2, 0.2, 0.2), # 标签距离圆圈的远近
cat.pos = c(0, -10, 240, 120, 20), # 标签相对于圆圈的角度cat.pos = c(-10, 10, 135)
cat.cex = 2, #标签字体大小
cat.fontface = "bold", # 标签字体加粗
cat.col=col,
cat.default.pos = "outer", # 标签位置, outer内;text 外
output=TRUE,
filename='./五组.png',# 文件保存
imagetype="png", # 类型(tiff png svg
resolution = 400, # 分辨率
compression = "lzw"# 压缩算法
)
点击“阅读原文”进入网址