You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

请求指导绘制多数据集Venn图:附维度及重叠数据

四组数据集Venn图绘制解决方案

嘿,针对你给出的四组数据(a、b、c、d),我整理了两种主流工具的实现方案,帮你快速画出清晰的Venn图:

先明确你的数据集信息

各数据集大小

  • 数据集a:1200
  • 数据集b:420
  • 数据集c:580
  • 数据集d:650

两两交集大小

  • a∩b: 200
  • a∩c: 100
  • b∩c: 20
  • a∩d: 11
  • b∩d: 61
  • c∩d: 0

注意:四组Venn图需要覆盖所有可能的交集区域(比如a∩b∩c、a∩b∩d这类三个及以上数据集的交集),你目前只提供了两两交集。如果这些高阶交集不存在(数值为0),可以直接用下面的方案;如果有实际数值,记得补充到对应位置哦。


方案1:使用R语言绘制

推荐用VennDiagram包,它支持最多5组数据的Venn图,自定义性强,输出效果也很规整。

步骤1:安装并加载包

install.packages("VennDiagram")
library(VennDiagram)

步骤2:绘制精准Venn图

直接传入你给出的数值(假设高阶交集为0),代码会自动计算各单独区域的大小:

draw.quad.venn(
  area1 = 1200, area2 = 420, area3 = 580, area4 = 650,
  n12 = 200, n13 = 100, n14 = 11,
  n23 = 20, n24 = 61, n34 = 0,
  n123 = 0, n124 = 0, n134 = 0, n234 = 0,
  n1234 = 0,
  fill = c("coral", "skyblue", "lightgreen", "gold"),
  alpha = 0.6,
  cat.cex = 1.1,
  cat.fontface = "bold",
  main = "Dataset Overlap Venn Diagram"
)

方案2:使用Python绘制

推荐两种方式:静态图用matplotlib-venn,交互式图用plotly,按需选择。

方式A:matplotlib-venn(静态图)

步骤1:安装依赖

pip install matplotlib-venn

步骤2:编写绘图代码

import matplotlib.pyplot as plt
from matplotlib_venn import venn4

# 按顺序传入各区域数值:(a单独, b单独, a∩b, c单独, a∩c, b∩c, a∩b∩c, d单独, a∩d, b∩d, a∩b∩d, c∩d, a∩c∩d, b∩c∩d, a∩b∩c∩d)
venn_values = (
    1200-200-100-11, 420-200-20-61, 200,
    580-100-20-0, 100, 20, 0,
    650-11-61-0, 11, 61, 0,
    0, 0, 0, 0
)

venn4(subsets=venn_values, set_labels=('a', 'b', 'c', 'd'))
plt.title("Four Dataset Overlap Venn Diagram")
plt.show()

方式B:Plotly(交互式图)

步骤1:安装依赖

pip install plotly

步骤2:编写绘图代码

import plotly.graph_objects as go

fig = go.Figure()

fig.add_trace(go.Venn(
    sets = ['a', 'b', 'c', 'd'],
    # 数值顺序:四个单独集合大小 → 所有两两交集 → 所有三三交集 → 四者共同交集
    values = [1200, 420, 580, 650, 200, 100, 20, 11, 61, 0, 0, 0, 0, 0, 0],
    set_colors = ["#FF5733", "#33FF57", "#3357FF", "#FF33F5"],
    opacity = 0.7
))

fig.update_layout(title_text="Interactive Four-Set Venn Diagram")
fig.show()

如果后续补充了高阶交集的数值,只需要把代码中对应的0替换成实际数值就可以啦!

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

火山引擎 最新活动