2014-10-31 75 views
1

我有一個數據集,需要將其轉化爲維恩圖。數據是這樣的:將二進制表示法轉換成維恩圖

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包可以把這個格式轉換成維恩圖...

我做了什麼:

我已經看過了文氏圖方案,但如何將它轉換成維恩圖需要您在紙上已經有維恩圖,即需要手動將每個區域的計數填充到該函數中。

我在找的是一個函數,它可以將這個二進制表示轉換爲上面顯示的維恩圖。

謝謝!

回答

2

使用VennCountsvennDiagram funcrions從limma包 - 截至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) 

Data shou ld是名爲Counts的類"VennCounts"的矩陣。


數據

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) 
)