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

如何用R的venn包提取维恩图各区域的基因列表?

提取venn包维恩图各区域基因列表的方法

用R的venn包绘制完维恩图后,提取各区域基因列表只需捕获绘图函数的返回对象,就能直接获取所有交集的基因集合:

  1. 先将维恩图结果存入变量
library(venn)

venn_list_no <- list(pt_v_lb = rownames(pt_v_lb_no), 
                     lbdm_v_lb = rownames(lbdm_v_lb_no), 
                     ptdm_v_lb = rownames(ptdm_v_lb_no), 
                     lbdm_v_pt = rownames(lbdm_v_pt_no), 
                     ptdm_v_pt = rownames(ptdm_v_pt_no), 
                     ptdm_v_lbdm = rownames(ptdm_v_lbdm_no))

# 把绘图结果赋值给venn_result,后续用它提取基因
venn_result <- venn(venn_list_no, zcolor = "style", ggplot = T, opacity = 0.2, box = F) + theme()
  1. 查看所有交集区域的名称
    运行以下代码,会输出维恩图所有区域的标识——每个标识用&连接对应列表的名称,比如6个列表共有的区域就是所有列表名用&串联的字符串:
names(venn_result$intersections)
  1. 提取目标区域的基因
    比如要提取6个列表共有的1251个基因,直接用对应的区域标识索引intersections部分:
# 提取6组共有的基因
common_6_groups <- venn_result$intersections[["pt_v_lb&lbdm_v_lb&ptdm_v_lb&lbdm_v_pt&ptdm_v_pt&ptdm_v_lbdm"]]

# 可查看前几个基因确认结果
head(common_6_groups)

# 需要保存到文件的话,用write.table即可
write.table(common_6_groups, "6组共有基因列表.txt", row.names = FALSE, col.names = FALSE, quote = FALSE)

其他区域的提取逻辑一致,比如要提取仅在pt_v_lb和lbdm_v_lb中存在的基因,使用对应的标识即可:

pt_lbdm_common <- venn_result$intersections[["pt_v_lb&lbdm_v_lb"]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:15:16