如何在R中制作三个相交的维恩图,并提供以下数据框

时间:2017-03-19 16:52:26

标签: r venn-diagram

我有四个数据帧df1,df2,df3,df4 它们每个都有两列属性,可用 PROPERTIES包含各种属性的名称,AVAILABLE的值为0或1,表示属性是否存在。 所有数据帧都具有相同的属性名称集。我想要一个有4个圆圈的维恩图,各个交叉点代表共同的属性。如何完成这项工作。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您的数据看起来像这样:

ll <- lapply(1:4, function(x) {
    data.frame(PROPERTIES = letters[1:8],
               AVAILABLE = as.logical(rbinom(8, 1, 0.5)),
               ind = x)
  })

请注意,我使用逻辑而不是二进制文件。

首先,让我们将数据重塑为更有用的东西。

library(dplyr)
library(tidyr)

dd <- bind_rows(ll) %>%
  spread(ind, AVAILABLE)

这给了我们

> head(dd)
  PROPERTIES     1     2     3     4
1          a  TRUE FALSE  TRUE  TRUE
2          b  TRUE FALSE FALSE  TRUE
3          c FALSE FALSE FALSE FALSE
4          d  TRUE  TRUE  TRUE FALSE
5          e  TRUE  TRUE FALSE FALSE
6          f  TRUE FALSE  TRUE  TRUE

我们可以使用包eulerr(我已经开发)来生成一个欧拉图。

library(eulerr)

fit <- euler(dd[, -1])

plot(fit)

结果可能如下所示:

enter image description here