如何在R语言的同一张韦恩图中叠加两组数据的数值
在同一张韦恩图中展示两组集合的计数
你可以通过提取两组集合的韦恩区域计数,结合ggvenn和ggplot2的文本标注功能,实现将X和Y的计数展示在同一张韦恩图中。以下是具体实现步骤:
实现步骤
- 加载依赖包:需要
ggvenn、dplyr和ggplot2 - 提取韦恩图数据:用
get_venn_data分别获取X和Y的区域坐标与计数 - 合并数据:将两组计数关联到对应的韦恩区域
- 绘制带双计数的韦恩图:先画出X的韦恩图,再添加Y的红色计数标注
完整示例代码
set.seed(123) genes <- paste0("gene", seq(1,1000)) X <- list( cond1 = sample(genes, 200), cond2 = sample(genes, 100), cond3 = sample(genes, 120), cond4 = sample(genes, 60) ) Y <- list( cond1 = sample(genes, 150), cond2 = sample(genes, 110), cond3 = sample(genes, 220), cond4 = sample(genes, 80) ) # 加载所需包 library(ggvenn) library(dplyr) library(ggplot2) # 获取X的韦恩区域数据(含坐标、计数) venn_data_X <- get_venn_data(X) # 获取Y的韦恩区域计数 venn_data_Y <- get_venn_data(Y) %>% select(id, count) # 合并两组数据,关联对应区域的计数 venn_data_combined <- venn_data_X %>% left_join(venn_data_Y, by = "id") # 绘制韦恩图:X的计数默认显示,Y的计数标红置于下方 ggvenn(X, show_percentage = FALSE) + geom_text( data = venn_data_combined, aes(x = x, y = y - 0.06, label = count.y), color = "red", size = 4, fontface = "bold" )
说明
get_venn_data是ggvenn的内置函数,会返回每个韦恩区域的唯一ID、坐标位置、对应集合组合以及计数信息- 通过调整
y = y - 0.06可以微调Y计数的垂直位置,避免与X的计数重叠 - 如果需要调整字体大小、样式,修改
size、fontface参数即可
内容的提问来源于stack exchange,提问作者m.i.cosacak
相关产品推荐
相关产品推荐

