用VennDiagram三分钟搞定韦恩图






用VennDiagram三分钟搞定韦恩图

大海哥  生信果  2023-07-26 19:01:02

点击蓝字 关注我们


什么是韦恩图,作用是怎样的?

作为重叠圆圈(通常为 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"# 压缩算法)



这样好看的Venn图你学会怎么制作了嘛~


当前R语言中的VennDiagram包可用于2元到5元的图维恩绘制,而大于5元的情况这需要借助R语言的另一个R包——UpsetR包。


如果觉得R绘图困难又对图形没有很苛刻的要求可以尝试云工具http://www.biocloudservice.com/home.html


好了今天的分享就到这里叭,如果有问题可以与大海哥取得联系哦~


点击“阅读原文”进入网址