[R language]——VennDiagram package for drawing Venn diagrams (nanny-level tutorial)

This issue introduces the use of the VennDiagram package to draw Venn diagrams of 2-5 yuan.

      Venn diagram , also called Venn diagram, Venn diagram, Venn diagram, Venn diagram, is a relational chart used to display the overlapping area of ​​a collection of elements. It reflects the cascading relationship between graphics and graphics. Intersection relationships between data sets.

     The current VennDiagram package in the R language can be used to draw Venn diagrams of 2 yuan to 5 yuan, and for cases larger than 5 yuan, you need to use another R package of the R language - the UpsetR package (will be shown in the next issue ).

1 Data preparation

Data input format (xlsx format):

 

2 R package loading and data import

#下载包#

install.packages("VennDiagram")

install.packages("openxlsx")

#加载包#

library (VennDiagram)  

library(openxlsx)

#数值导入,可对数值进行配对

set1<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet1",sep=',')

set2<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet2",sep=',')

set3<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet3",sep=',')

set4<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet4",sep=',')

set5<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet5",sep=',')

set6<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet6",sep=',')

#数据转置,如果不转后头函数venn.diagram对矩阵数值不识别#

set1=t(set1)

set2=t(set2)

set3=t(set3)

set4=t(set4)

set5=t(set5)

set6=t(set6)

head(set)

#二元#

venn.diagram(x=list(set1,set2),

             scaled = F, # 根据比例显示大小

             alpha= 0.5, #透明度

             lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF'), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

             label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

             cex = 2, # 数字大小

             fontface = "bold",  # 字体粗细;加粗bold

             fill=c('#FFFFCC','#CCFFFF'), # 填充色 配色https://www.58pic.com/

             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.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

             cat.default.pos = "outer",  # 标签位置, outer内;text 外

             output=TRUE,

             filename='C:/Rdata/jc/两组.png',# 文件保存

             imagetype="png",  # 类型(tiff png svg)

             resolution = 400,  # 分辨率

             compression = "lzw"# 压缩算法

             )

grid.draw(data)

Figure 1 Binary Venn 

#三元#

venn.diagram(x=list(set1,set2,set3),

             scaled = F, # 根据比例显示大小

             alpha= 0.5, #透明度

             lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF',"#FFCCCC"), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

             label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

             cex = 2, # 数字大小

             fontface = "bold",  # 字体粗细;加粗bold

             fill=c('#FFFFCC','#CCFFFF',"#FFCCCC"), # 填充色 配色https://www.58pic.com/

             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.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

             cat.default.pos = "outer",  # 标签位置, outer内;text 外

             output=TRUE,

             filename='C:/Rdata/jc/三组.png',# 文件保存

             imagetype="png",  # 类型(tiff png svg)

             resolution = 400,  # 分辨率

             compression = "lzw"# 压缩算法

)

grid.draw(data)

Figure 2 Ternary Venn

 

#四元#

venn.diagram(x=list(set1,set2,set3,set4),

             scaled = F, # 根据比例显示大小

             alpha= 0.5, #透明度

             lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF"), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

             label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

             cex = 2, # 数字大小

             fontface = "bold",  # 字体粗细;加粗bold

             fill=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF"), # 填充色 配色https://www.58pic.com/

             category.names = c("Set1", "Set2","Set3","Set4") , #标签名

             cat.dist = c(0.2, 0.2, 0.1, 0.1), # 标签距离圆圈的远近

             cat.pos = c(-20, 20, -20, 20), # 标签相对于圆圈的角度cat.pos = c(-10, 10, 135)

             cat.cex = 2, #标签字体大小

             cat.fontface = "bold",  # 标签字体加粗

             cat.col=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF"),   #cat.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

             cat.default.pos = "outer",  # 标签位置, outer内;text 外

             output=TRUE,

             filename='C:/Rdata/jc/四组.png',# 文件保存

             imagetype="png",  # 类型(tiff png svg)

             resolution = 400,  # 分辨率

             compression = "lzw"# 压缩算法

)

grid.draw(data)

Figure 4 Quaternary Venn 

#五元#

venn.diagram(x=list(set1,set2,set3,set4,set5),

             scaled = F, # 根据比例显示大小

             alpha= 0.5, #透明度

             lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF", "#CCFFCC"), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

             label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

             cex = 2, # 数字大小

             fontface = "bold",  # 字体粗细;加粗bold

             fill=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF", "#CCFFCC"), # 填充色 配色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=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF", "#CCFFCC"),   #cat.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

             cat.default.pos = "outer",  # 标签位置, outer内;text 外

             output=TRUE,

             filename='C:/Rdata/jc/五组.png',# 文件保存

             imagetype="png",  # 类型(tiff png svg)

             resolution = 400,  # 分辨率

             compression = "lzw"# 压缩算法

)

grid.draw(data)

 

Figure 4 Five Yuan Venn

#总结#

install.packages("VennDiagram")

install.packages("openxlsx")

library (VennDiagram)  

library(openxlsx)



#数值导入,可对数值进行配对

set1<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet1",sep=',')

set2<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet2",sep=',')

set3<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet3",sep=',')

set4<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet4",sep=',')

set5<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet5",sep=',')

set6<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet6",sep=',')

#数据转置,如果不转后头函数venn.diagram对矩阵数值不识别#

set1=t(set1)

set2=t(set2)

set3=t(set3)

set4=t(set4)

set5=t(set5)

set6=t(set6)

#全部代码注释#

venn.diagram(x=list(set1,set2,....),

                    scaled = F, # 根据比例显示大小

                    alpha= 0.5, #透明度

                    lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF'), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

                    label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

                    cex = 2, # 数字大小

                    fontface = "bold",  # 字体粗细;加粗bold

                    fontfamily = "Times New Roma",  # 字体

                    fill=c('#FFFFCC','#CCFFFF'), # 填充色 配色https://www.58pic.com/

                    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.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

                    cat.default.pos = "outer",  # 标签位置, outer内;text 外

                    cat.fontfamily = "Times New Roma",  # 字体

                    xrotation = 2,  # 1 2 3 旋转确定大打头数据集

                    filename='C:/Rdata/jc/两组.png',# 文件保存

                    output=TRUE,

                    imagetype="png",  # 类型(tiff png svg)

                    resolution = 400,  # 分辨率

                    compression = "lzw",  # 压缩算法

                    ext.text = T # 增加指示线和标签

                    ext.percent = c(0.1,0.1,0.1), # 出现指示线和标签的条件

                    ext.dist = c(0.01,0.01),

                    ext.length = 0.8)

                    )

grid.draw(data)

Okay, that’s it for this sharing.

Follow the official account and send "Venn" to get the complete code and demo data package

Guess you like

Origin blog.csdn.net/weixin_54004950/article/details/128336522