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

如何在Excel中完成集合运算(数量、交集、并集)并绘制韦恩图?

高效计算表型集合交集并绘制韦恩图的方法

一、Excel内置函数搞定(不用额外工具)

要是你的数据是每行对应一个样本,各列用1/0或者TRUE/FALSE标记样本是否属于对应表型,直接用这些函数快速算交集:

  • 表型1和表型2的交集数量:=SUMPRODUCT((A:A=1)*(B:B=1))
    原理很简单:(A:A=1)会生成一个布尔数组,符合表型1的样本对应1,否则是0;两个数组相乘后,只有同时满足两个表型的位置会得到1,SUMPRODUCT求和就是交集的样本数。
  • 三个表型的交集(比如1∩2∩3):=SUMPRODUCT((A:A=1)*(B:B=1)*(C:C=1))

如果你的数据是各列直接存对应表型的样本ID(每行一个ID),用COUNTIFS配合数组公式:
比如表型1在A列,表型2在B列,求交集数量:=SUM(COUNTIF(B:B,A:A)),老版Excel要按Ctrl+Shift+Enter触发数组计算,Excel 365及以上直接回车就行。

二、Python脚本自动化(适合多表型或重复计算)

如果表型数量多,或者想直接生成韦恩图,用Python的pandas处理数据、matplotlib_venn绘图,效率拉满:

  1. 先读Excel数据:
import pandas as pd
df = pd.read_excel("你的表型数据.xlsx")
  1. 假设数据是二进制标记(1/0),提取各表型的样本集合:
set1 = set(df[df["表型1"] == 1].index)
set2 = set(df[df["表型2"] == 1].index)
set3 = set(df[df["表型3"] == 1].index)
  1. 计算各类交集数量:
intersect_1_2 = len(set1 & set2)
intersect_1_3 = len(set1 & set3)
intersect_1_2_3 = len(set1 & set2 & set3)
  1. 直接生成韦恩图:
from matplotlib_venn import venn3
import matplotlib.pyplot as plt

venn3([set1, set2, set3], ("表型1", "表型2", "表型3"))
plt.title("表型样本韦恩图")
plt.show()

一套代码下来,计算和绘图一步完成,批量处理多个表型组合也不在话下。

三、R语言快速实现(统计工具首选)

R的VennDiagram包可以直接算交集还能绘图:

library(readxl)
library(VennDiagram)

# 读取数据
df <- read_excel("你的表型数据.xlsx")
# 构建各表型的样本ID集合
sets <- list(
  表型1 = df$样本ID[df$表型1 == 1],
  表型2 = df$样本ID[df$表型2 == 1],
  表型3 = df$样本ID[df$表型3 == 1]
)
# 绘制韦恩图
venn.plot <- venn.diagram(
  x = sets,
  filename = NULL, # 直接在窗口显示,不保存文件
  fill = c("red", "blue", "green")
)
grid.draw(venn.plot)
# 提取所有交集的数量
intersection_counts <- calculate.overlap(sets)
print(intersection_counts)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:00:58