重绘维恩图

11
什么是用R重新绘制Venn图的最简单方法?我没有用于生成Venn图的数据,但其他图都是用R绘制的...我想保持相同的结构,这意味着我必须以某种方式在R中重新绘制它。
你有什么想法吗? 这是我需要在R中创建的Venn图 这是我用于绘制其他Venn图的代码。
v1 <- venn.diagram(list(1=a, 2=b, 3=c, 4=d), filename=NULL, fill=rainbow(4), cex.prop=NULL, cex=1.5)
png("TEST.png", width=7, height=7, units='in', res=150)
grid.newpage()
grid.draw(v1)
dev.off()
2个回答

10

您可以调用draw.venn.*函数并直接输入重叠区域。这可能会很繁琐,但我认为这是您唯一的选择。您会注意到组的顺序不同,也许有一种方法可以控制它,但我现在不确定是什么。

a <- c(2411, 12433,939,238, 1575,2483,2923,540)
b <- c(1575, 2483,2923, 540, 1255, 1330, 615, 622)
c <- c(1247, 1330, 2483, 12433, 150, 615, 2923, 939)
d <- c(150,615,2923,939, 1245, 622, 540, 238)


draw.quad.venn(area1 = sum(a), area2 = sum(b), area3 = sum(c), area4 = sum(d), 
               n12 = sum(a[5:8]), n13 = sum(a[c(2,3,6,7)]), n14 = sum(a[c(3,4,7,8)]), 
               n23 = sum(b[c(2,3,6,7)]), n24 = sum(b[c(3,4,7,8)]), 
               n34 = sum(c[5:8]),
               n123 = sum(a[6:7]),
               n134 = sum(a[c(3,7)]),
               n124 = sum(a[7:8]),
               n234 = sum(b[c(3,7)]),
               n1234 = 2923, category = c("A","B","C","D"), 
               fill = colorspace::rainbow_hcl(4),
               col = colorspace::rainbow_hcl(4)[c(1,3,4,2)], lwd = rep(1, 4))

输入图像描述


1
你能告诉我如何找出哪个向量不正确,基于这样的错误:Error in draw.quad.venn(area1 = sum(a), area2 = sum(b), area3 = sum(c), : Impossible: a15 <- n12 - a6 - a11 - a12 produces negative area - Rechlay
抱歉在第一条评论后面再发一条。我想知道在创建数字向量时应该使用什么样的顺序。 - Rechlay
对于左侧的集合,我从左上角开始制作向量,并向下移动。对于右侧的组,我从右上角开始向下移动。如果您查看我的向量和原始的文氏图,应该很明显。 - emilliman5
1
为什么不在示例中展示的图表的空白PNG上直接绘制数字呢?这似乎很简单,然后您可以保留原始设计。而且您可以选择任何顺序:)。 - moodymudskipper

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接