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

如何在R语言的同一张韦恩图中叠加两组数据的数值

在同一张韦恩图中展示两组集合的计数

你可以通过提取两组集合的韦恩区域计数,结合ggvenn和ggplot2的文本标注功能,实现将X和Y的计数展示在同一张韦恩图中。以下是具体实现步骤:

实现步骤

  1. 加载依赖包:需要ggvenn、dplyr和ggplot2
  2. 提取韦恩图数据:用get_venn_data分别获取X和Y的区域坐标与计数
  3. 合并数据:将两组计数关联到对应的韦恩区域
  4. 绘制带双计数的韦恩图:先画出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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:08:36