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

如何实现R语言三元维恩图的比例化大小绘制?

解决三元维恩图比例化的问题

VennDiagram包的draw.triple.venn()默认生成对称的三元维恩图,不会根据输入的面积数值自动调整圆的大小比例。要生成圆大小匹配实际集合面积的比例化维恩图,推荐使用以下两种工具包:

方案一:用eulerr包(推荐,精准比例)

eulerr专门用于生成比例化的欧拉图(可完美适配你的集合嵌套逻辑),步骤如下:

# 首次使用需安装包
install.packages("eulerr")
library(eulerr)

# 定义集合及交集的大小
set_info <- list(
  "All Extractables" = 2125,
  "CERAPP" = 805,
  "ToxCast" = 387,
  "All Extractables&CERAPP" = 805,
  "All Extractables&ToxCast" = 387,
  "CERAPP&ToxCast" = 385,
  "All Extractables&CERAPP&ToxCast" = 385
)

# 拟合比例化模型
fit <- euler(set_info)

# 绘制比例化图
plot(fit, 
     fills = c("white", "red", "yellow"),
     edges = "black",
     labels = list(fontsize = 12),
     quantities = list(fontsize = 10))

这段代码会根据你输入的集合大小,自动调整每个圆的尺寸和位置,准确呈现CERAPP、ToxCast完全包含在All Extractables中,且两者有部分重叠的关系。

方案二:用ggVennDiagram包(ggplot2风格)

如果需要ggplot2生态的可视化风格,可使用ggVennDiagram,通过模拟集合元素来实现比例化:

# 首次使用需安装包
install.packages("ggVennDiagram")
library(ggVennDiagram)
library(ggplot2)

# 模拟集合元素,匹配你的面积和交集逻辑
venn_elements <- list(
  "All Extractables" = paste0("item_", 1:2125),
  "CERAPP" = paste0("item_", (2125 - 805 + 1):2125), # 完全包含在大集合中
  "ToxCast" = c(paste0("item_", (2125 - 385 + 1):2125), # 和CERAPP重叠的385个元素
                paste0("unique_tox_", 1:2)) # 仅属于ToxCast的2个元素
)

# 绘制比例化维恩图
ggVennDiagram(venn_elements, 
              fill_color = c("white", "red", "yellow"),
              stroke_color = "black") +
  theme(legend.position = "none")

补充说明

VennDiagram包的draw.triple.venn()本身不支持比例化调整,它的设计目标是生成美观的对称维恩图,而非严格匹配数据比例的可视化,因此换用上述工具包是更合理的选择。

内容的提问来源于stack exchange,提问作者Zaman Muhammad Asad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:34:56