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

在R中绘制嵌套式维恩图:解决eulerr包数值参数需求问题

在R中绘制无数值的嵌套维恩图(层级包含关系)

针对你需要展示colônias⊂possessões⊂domínios的完全包含关系,且无需显示数值的需求,提供两种可行方案:

方案1:用eulerr构造符合嵌套的虚拟数值并隐藏标签

eulerr需要数值参数计算图形布局,我们可以手动定义满足嵌套逻辑的虚拟数值,再隐藏所有数值展示,仅保留组名:

library(eulerr)

# 构造符合嵌套关系的虚拟集合数据
set_data <- list(
  domínios = 100,
  possessões = 80,
  colônias = 60,
  "domínios&possessões" = 80,
  "domínios&colônias" = 60,
  "possessões&colônias" = 60,
  "domínios&possessões&colônias" = 60
)

# 生成拟合对象
fit <- euler(set_data)

# 绘图:关闭数值显示,仅保留组标签
plot(fit, quantities = FALSE, labels = c("domínios", "possessões", "colônias"))

说明:定义的虚拟数值完全满足内层集合全包含于外层的逻辑,quantities = FALSE会隐藏所有数值,最终图形呈现标准的嵌套维恩图样式。

方案2:用ggplot2+ggforce手动绘制嵌套圆形

如果不想依赖维恩图包的参数限制,可直接手动绘制嵌套圆,完全自定义样式:

library(ggplot2)
library(ggforce)

# 定义嵌套圆的参数:圆心一致,半径依次递减
circle_df <- data.frame(
  group = c("domínios", "possessões", "colônias"),
  x = rep(0, 3),
  y = rep(0, 3),
  radius = c(3, 2, 1)
)

# 绘制嵌套圆
ggplot() +
  geom_circle(data = circle_df, aes(x0 = x, y0 = y, r = radius, fill = group), alpha = 0.5) +
  geom_text(data = circle_df, aes(x = x, y = y + radius + 0.2, label = group)) +
  coord_fixed() + # 保证圆形不被拉伸
  theme_void() + # 清除多余背景和坐标轴
  theme(legend.position = "none")

说明:这种方法无需任何集合数值,直接通过圆心和半径定义嵌套关系,可自由调整颜色、大小、标签位置等样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:15:51