将二元表示转换为维恩图

时间:2014-10-31 16:03:31

标签: r

我有一个数据集,我需要变成维恩图。数据如下所示:

con1 con2 con3 con4 counts
0.0 0.0 0.0 0.0 4165
0.0 0.0 0.0 1.0 118107
0.0 0.0 1.0 0.0 428978
0.0 0.0 1.0 1.0 32045
0.0 1.0 0.0 0.0 84489
0.0 1.0 0.0 1.0 2199
0.0 1.0 1.0 0.0 67245
0.0 1.0 1.0 1.0 42977
1.0 0.0 0.0 0.0 780948
1.0 0.0 0.0 1.0 40406
1.0 0.0 1.0 0.0 28988
1.0 0.0 1.0 1.0 3559
1.0 1.0 0.0 0.0 9802772
1.0 1.0 0.0 1.0 8890
1.0 1.0 1.0 0.0 6577
1.0 1.0 1.0 1.0 84120

是否有任何R包可以将此格式转换为维恩图...

我做了什么:

我查看了VennDiagram包,但是如何将其转换为维恩图需要你已经在纸上有维恩图,即你需要手动将每个区域的计数填充到该函数中。

我正在寻找的是一个可以将这个二进制表示转换为维恩图的函数,如上所示。

谢谢!

1 个答案:

答案 0 :(得分:2)

使用VennCounts包中的vennDiagramlimma个功能 - 如link所示

Limma不是CRAN的一部分,您可以输入以下两个命令来安装limma:

source("http://bioconductor.org/biocLite.R")
biocLite("limma")

以下是加载数据和绘制维恩图的方法:

library("limma")

names(dat)[5] <- "Counts" 
dat <- as.matrix(dat)

class(dat) <- "VennCounts"
vennDiagram(dat)

数据应该是类"VennCounts"的矩阵,名称为Counts。


数据

dat <- structure(list(
    con1 = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1), 
    con2 = c(0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1), 
    con3 = c(0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1), 
    con4 = c(0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1), 
    counts = c(4165L, 118107L, 428978L, 32045L, 84489L, 2199L, 67245L, 42977L, 780948L, 40406L, 28988L, 3559L, 9802772L, 8890L, 6577L, 84120L)
    ), 
    .Names = c("con1", "con2", "con3", "con4", "counts"), 
    class = "data.frame", row.names = c(NA, -16L)
)