如何使用R创建维恩图?

时间:2019-04-22 01:12:49

标签: r ggplot2 gplots

我使用eulerr包创建了维恩图,但它不允许我对其进行自定义,并且内圆的轮廓似乎触及了示例空间圆。我浏览了VennDiagram软件包手册,但没有运气。有没有一种方法可以使用ggplot2或任何其他R包创建维恩图。

我正在寻找该用户正在尝试使用我拥有的数据进行的操作。 3套落入整个样品空间。 How to draw a venn diagram subset by a main vector in R

这是使用eulerr包创建的:

from https://imgur.com/a/Zh37gaR

这是我所拥有的数据。圆B,C和D应该在圆A内,圆总数为141。变量a中的35是3维恩图与圆之间的空间(空白)。

b = c(50,0,9,2,1,0,0,0)
c = c(50,21,0,2,0,3,0,0)
d = c(50,21,9,2,0,3,20,0)
a = c(50, 21, 9, 2,1,3,20,35)

手提包= cbind(b,c,d,a)

我不知道该如何做并制作一个可以定制的图表。

使用eulerr软件包时,我在命令中手动输入了数据。

1 个答案:

答案 0 :(得分:0)

您可以考虑使用我的nVennR包裹。有了您的数据,

>library(nVennR)
> myV <- plotVenn(list(b = c(50,9,2,1),
+                      c = c(50,21,2,3),
+                      d = c(50,21,9,2,3,20),
+                      a = c(50, 21, 9, 2,1,3,20,35)))
> showSVG(myV, opacity = 0.2, borderWidth = 1)

结果:

cont2

您还可以列出每个区域中的元素:

> listVennRegions(myV)
$`0, 0, 0, 1 (a)`
[1] 35

$`0, 0, 1, 1 (d, a)`
[1] 20

$`0, 1, 1, 1 (c, d, a)`
[1] 21  3

$`1, 0, 0, 1 (b, a)`
[1] 1

$`1, 0, 1, 1 (b, d, a)`
[1] 9

$`1, 1, 1, 1 (b, c, d, a)`
[1] 50  2

请注意,我删除了您列表中的零。程序包将这些零作为元素,列表a中没有这些零。如果您有兴趣,可以为算法找到vignetteweb interface