如何在R中创建一个以泛集为背景的维恩图?

sgtfey8w  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(136)

我试图在R中创建一个维恩图,其中补集也与感兴趣的集合沿着指示。“补集”指的是不包含在感兴趣的集合中的元素集合;我希望这是它的正确术语(如果我说错了,请务必指出正确的术语)。
有了这个玩具数据集,我就可以让补集显示为表示通用集(所有这些集合的集合)的椭圆的一部分,如下所示:

library(ggVennDiagram)

set.seed(44)

uset <- replicate(1000, paste0(sample(letters, size = 40, replace = TRUE), collapse = ""))
set1 <- sample(uset, size = 200)
set2 <- sample(uset, size = 600)
set3 <- sample(uset, size = 800)

ggVennDiagram(list(uset, set1, set2, set3), category.names = c("Universe", "Set1", "Set2", "Set3"))

然而,这并不完全是我所寻找的。我实际上希望补集显示为赋予维恩图所呈现的(假设的矩形)背景空间的值。有点像维恩图中的阴影区域(https://quantifyinghealth.com/wp-content/uploads/2022/07/venn-diagram-representing-the-complement-of-a-A-768x510.png;StackOverflow不允许我嵌入这个图像)。
我似乎想不出如何在R中做到这一点。任何指针都将非常感谢。

baubqpgj

baubqpgj1#

我通过删除uset修改了ggVennDiagram。由于ggVennDiagram是基于ggplot2的,所以加载库,并添加一个带注解的矩形。注意,矩形在x和y方向上的大小为(0,数据点的数量)。

library(ggVennDiagram)
library(ggplot2)

set.seed(44)

uset <- replicate(1000, paste0(sample(letters, size = 40, replace = TRUE), collapse = ""))
set1 <- sample(uset, size = 200)
set2 <- sample(uset, size = 600)
set3 <- sample(uset, size = 800)

ggVennDiagram(list(set1, set2, set3), category.names = c("Set1", "Set2", "Set3")) +
  geom_rect(aes(xmin = 0, xmax = 1000, ymin = 0, ymax = 1000), color='black', fill='blue', alpha=.1) +
  geom_text(aes(x = 1000, y = 1000, label = paste0("Universal (", 1000, ")")), vjust = 1, hjust = 1)

相关问题