如何用R的venn包提取维恩图各区域的基因列表?
提取venn包维恩图各区域基因列表的方法
用R的venn包绘制完维恩图后,提取各区域基因列表只需捕获绘图函数的返回对象,就能直接获取所有交集的基因集合:
- 先将维恩图结果存入变量
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()
- 查看所有交集区域的名称
运行以下代码,会输出维恩图所有区域的标识——每个标识用&连接对应列表的名称,比如6个列表共有的区域就是所有列表名用&串联的字符串:
names(venn_result$intersections)
- 提取目标区域的基因
比如要提取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
相关产品推荐
相关产品推荐

