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

求支持重复元素的类维恩图绘制工具(R语言)

处理带重复元素的类维恩图可视化方案

常规维恩图工具默认处理无重复的集合,无法体现元素的实际出现次数。以下是几个能支持重复元素计数的R语言可视化方案:

1. UpSetR:替代维恩图的高效多组可视化

Upset图是维恩图的进阶替代,尤其适合多组数据,能直观展示元素在各组的重复计数:

library(UpSetR)

# 先整理元素在各组的计数表格
element_counts <- data.frame(
  Element = c("A", "B", "C", "D"),
  set1 = c(3, 2, 0, 0),
  set2 = c(3, 0, 1, 0),
  set3 = c(3, 0, 0, 1)
)

# 绘制Upset图,展示元素的跨组计数情况
upset(element_counts, 
      sets = c("set1", "set2", "set3"),
      keep.order = TRUE,
      mainbar.y.label = "元素出现总次数",
      sets.x.label = "各组元素计数")

2. ComplexHeatmap:灵活的加权Upset图

ComplexHeatmap的Upset模块支持自定义样式,同样可以基于计数矩阵实现重复元素的可视化:

library(ComplexHeatmap)

# 构建元素计数矩阵(行=元素,列=分组)
count_matrix <- matrix(
  c(3, 2, 0, 0,
    3, 0, 1, 0,
    3, 0, 0, 1),
  nrow = 4, byrow = FALSE,
  dimnames = list(c("A", "B", "C", "D"), c("set1", "set2", "set3"))
)

# 绘制带注释的Upset图
Upset(count_matrix, 
      set_order = c("set1", "set2", "set3"),
      top_annotation = upset_top_annotation(count_matrix, 
                                            y_axis_label = "元素出现总次数"),
      right_annotation = upset_right_annotation(count_matrix, 
                                               x_axis_label = "各组元素计数"))

3. venneuler:加权维恩图(保留圆形布局)

如果偏好维恩图的圆形布局,可以用venneuler绘制加权维恩图,通过图形面积体现重复元素的数量:

library(venneuler)

# 定义各组及交集的元素总计数
v <- venneuler(c(set1 = 5, set2 = 4, set3 = 4, 
                 "set1&set2" = 3, "set1&set3" = 3, "set2&set3" = 3, 
                 "set1&set2&set3" = 3))

plot(v)

方案说明

  • Upset类工具(UpSetR/ComplexHeatmap):适合3组以上数据,能清晰展示单个元素在不同组的计数细节。
  • venneuler:保留维恩图的直观布局,通过面积大小反映重复元素的权重,但仅适合3组及以内的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:47:47