在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
相关产品推荐
相关产品推荐

