如何通过R中的主矢量绘制维恩图子集

时间:2016-03-08 16:46:33

标签: r

假设我有一个像这样的数据框:

df<-data.frame(
    A=rep(1, 10),
    B=c(1,1,1,1,1,1,1, 1, 0,0),
    C=c(0, 0, 0, 1, 1, 1, 1, 1, 1, 1),
    D=c(0, 1, 1, 1, 1, 1, 1, 1, 1, 0)
)
df
   A B C D
1  1 1 0 0
2  1 1 0 1
3  1 1 0 1
4  1 1 1 1
5  1 1 1 1
6  1 1 1 1
7  1 1 1 1
8  1 1 1 1
9  1 0 1 1
10 1 0 1 0

我的问题是如何在R中绘制一个维恩图,如下所示,其中B,C,D是A的子集。 enter image description here

1 个答案:

答案 0 :(得分:1)

我想我理解这个问题,但第一部分看起来像是 non sequitur 。如果您的数据框包含一些数据,则图表的外观将取决于这些数据。如果您想要该特定图表,则可以考虑使用我的nVennR软件包,如下所示:

> library(nVennR)
> myV <- createVennObj(nSets = 4, sNames = c('A', 'B', 'C', 'D'))
> myV <- setVennRegion(myV, c('A', 'B'), 1)
> myV <- setVennRegion(myV, c('A', 'C'), 1)
> myV <- setVennRegion(myV, c('A', 'B', 'D'), 2)
> myV <- setVennRegion(myV, c('A', 'C', 'D'), 1)
> myV <- setVennRegion(myV, c('A', 'B', 'C', 'D'), 5)
> myV <- plotVenn(nVennObj = myV)
> showSVG(myV, opacity = 0.1, borderWidth = 3)

结果: Euler diagram

如果您有兴趣,可以在vignette上查看更多选项。