维恩图:也叫文氏图,用于显示元素集合重叠区域的图示。 本文展示2种方法:
VennDiagram包VennDiagram包的缺点是区域大小不能与实际对比一致
install.packages("VennDiagram") library("VennDiagram") Length_A <- 54.07 Length_B <- 38.86 Length_C <- 3.55 Length_AB <- 2.31 Length_BC <- 0.24 Length_AC <- 0.71 Length_ABC <- 0.07 require(VennDiagram) venn.diagram(list(B = 1:1800, A = 1571:2020),fill = c("red", "green"), alpha = c(0.5, 0.5), cex = 2,cat.fontface = 4,lty =2, fontfamily =3) , filename = "trial2.png") draw.triple.venn(area1=Length_A, area2=Length_B, area3=Length_C ,n12=Length_AB, n23=Length_BC, n13=Length_AC, n123=Length_ABC ,category = c('天猫','线下','京东') ,col=c('red','green','blue'),fill=c('red','green','blue') ,cat.col=c('red','green','blue') ,reverse = FALSE ,euler.d = TRUE ,scaled = TRUE ,cex = c(4,2,1,1,1,1,1) ) venneuler包 venneuler包的缺点是重叠比例标示需要自己添加 # install.packages('venneuler') require(venneuler) vd <- venneuler(c(A=0.3, B=0.3, C=1.1, "A&B"=0.1, "A&C"=0.2, "B&C"=0.1 ,"A&B&C"=0.1)) plot(vd)自己添加标示:
require(venneuler) vd <- venneuler(c(A=0.3, B=0.3, C=1.1, "A&B"=0.1, "A&C"=0.2, "B&C"=0.1 ,"A&B&C"=0.1)) vd$labels <- c( paste(0.3+0.1+0.2+0.1, "\n", "京东"), paste( "淘宝", "\n", 0.3+0.1+0.1+0.1), paste(1.1+0.2+0.1+0.1, "\n", "线下") ) txt_centers <- vd$centers txt_centers <- rbind(colMeans(txt_centers[1:2,]), colMeans(txt_centers[c(1,3),]), colMeans(txt_centers[2:3,]), colMeans(txt_centers[1:3,])) plot(vd) txt <- c(0.1, 0.2, 0.1, 0.1) sapply(1:4, function(i) text(txt_centers[i,1], txt_centers[i,2], txt[i]))