如何将Tibble两列数据处理为适配ggvenn包的韦恩图输入列表
解决方案
首先加载所需R包:
library(tidyverse) library(ggvenn)
假设你的tibble数据结构如下(可替换为你的实际数据):
sample_gene <- tibble( sample = rep(c("SampleA", "SampleB", "SampleC"), each = 5), gene = c("Gene1", "Gene2", "Gene3", "Gene4", "Gene5", "Gene3", "Gene4", "Gene5", "Gene6", "Gene7", "Gene5", "Gene6", "Gene7", "Gene8", "Gene9") )
1. 将tibble转换为ggvenn所需的命名列表
按sample分组,把每个样本对应的所有gene汇总成向量,再转换为命名列表:
gene_list <- sample_gene %>% group_by(sample) %>% summarize(gene = list(gene)) %>% deframe()
这里deframe()会把tibble的第一列作为列表名称,第二列作为列表的元素值,刚好匹配ggvenn的输入要求。
2. 绘制韦恩图
直接用ggvenn()函数绘图,可根据需求调整样式参数:
ggvenn(gene_list, fill_color = c("#0073C2FF", "#EFC000FF", "#868686FF"), stroke_size = 1, text_size = 4)
如果样本数量超过3个,ggvenn会自动适配多集合的韦恩图样式,只需保证gene_list是正确的命名列表即可。
内容的提问来源于stack exchange,提问作者Rasmus Eugen-Olsen
相关产品推荐
相关产品推荐

