You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言嵌套韦恩图组合值计算及5层嵌套绘制技术问询

解决5层嵌套韦恩图的组合值计算与绘制问题

哥们,我明白你的需求了——你要做的是完全嵌套的5层韦恩图(每层都完全包含内层所有圈),之前三层的逻辑是对的,现在扩展到5层,核心是搞清楚完全嵌套集合的交集规则:任意几个集合的交集,等于其中最内层(数值最小)的那个集合的大小。

一、先理清楚你的层级数值对应关系

从内到外的5层数值如下:

  • 第1层(最内层):579
  • 第2层:579+400=979
  • 第3层:979+192=1171
  • 第4层:1171+52=1223
  • 第5层(最外层):1223+11=1234

对应到draw.quintuple.venn的参数命名,我们把最外层设为area1,最内层设为area5(这样符合你之前三层的参数逻辑):

  • area1=1234(第5层)、area2=1223(第4层)、area3=1171(第3层)、area4=979(第2层)、area5=579(第1层)

二、推导所有交集参数

因为是完全嵌套(内层集合完全包含在所有外层集合里),所以:

  1. 两两交集:任意两个集合的交集 = 数值较小的那个集合的大小
    比如n12=1223(area2的大小,因为第4层完全在第5层里),n23=1171(area3的大小),以此类推。
  2. 三三/四四/五五交集:任意多个集合的交集 = 其中最内层集合的大小
    比如n123=1171(area3的大小),n1234=979(area4的大小),n12345=579(最内层数值)。

三、完整可运行代码

# 加载VennDiagram包
library(VennDiagram)

# 定义各层面积(从外到内)
area1 <- 1234  # 第5层(最外层)
area2 <- 1223  # 第4层
area3 <- 1171  # 第3层
area4 <- 979   # 第2层
area5 <- 579   # 第1层(最内层)

# 两两交集参数
n12 <- 1223
n13 <- 1171
n14 <- 979
n15 <- 579
n23 <- 1171
n24 <- 979
n25 <- 579
n34 <- 979
n35 <- 579
n45 <- 579

# 三三交集参数
n123 <- 1171
n124 <- 979
n125 <- 579
n134 <- 979
n135 <- 579
n145 <- 579
n234 <- 979
n235 <- 579
n245 <- 579
n345 <- 579

# 四四交集参数
n1234 <- 979
n1235 <- 579
n1245 <- 579
n1345 <- 579
n2345 <- 579

# 五交集参数
n12345 <- 579

# 绘制5层嵌套韦恩图(可自定义样式)
venn.plot <- draw.quintuple.venn(
  area1 = area1, area2 = area2, area3 = area3, area4 = area4, area5 = area5,
  n12 = n12, n13 = n13, n14 = n14, n15 = n15,
  n23 = n23, n24 = n24, n25 = n25,
  n34 = n34, n35 = n35,
  n45 = n45,
  n123 = n123, n124 = n124, n125 = n125,
  n134 = n134, n135 = n135,
  n145 = n145,
  n234 = n234, n235 = n235,
  n245 = n245,
  n345 = n345,
  n1234 = n1234, n1235 = n1235,
  n1245 = n1245,
  n1345 = n1345,
  n2345 = n2345,
  n12345 = n12345,
  # 自定义样式:填充色、边框宽度、文字大小等
  fill = c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00"),
  lwd = 2,
  cex = 1.2,
  cat.cex = 1.2,
  cat.pos = c(-20, 20, 130, 230, 330),  # 调整标签位置避免重叠
  cat.dist = c(0.05, 0.05, 0.08, 0.08, 0.08)
)

# 输出图形
grid.draw(venn.plot)

四、验证逻辑正确性

你可以核对每层的独有区域大小:

  • 最外层(1234)独有部分:1234-1223=11(和你说的第五层增量一致)
  • 第四层(1223)独有部分:1223-1171=52(和你说的第四层增量一致)
  • 第三层(1171)独有部分:1171-979=192(和你说的第三层增量一致)
  • 第二层(979)独有部分:979-579=400(和你说的第二层增量一致)
  • 最内层(579)独有部分:579(完全独立区域)

所有数值完全匹配你的需求,运行代码后就能得到完美的5层嵌套韦恩图啦。

内容的提问来源于stack exchange,提问作者user9588528

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:00:06