我想知道我是否可以在R中使用vennDiagram
生成维恩图,而不使用vennCounts
生成计数矩阵,但保存了类似的矩阵。所以我要说我有这个矩阵:
G S P Counts
1 1 1 117898
1 1 0 125901
1 0 1 119360
0 1 1 118086
1 0 0 3505
0 1 0 753
0 0 1 701
0 0 0 0
当我做
时我称之为M.m <- as.matrix(M)
vennDiagram(m)
我明白了:
vennDiagram(m)中的错误:无法绘制超过3组的维恩图
有没有解决这个问题的方法?我试图绕过生成1和0的矩阵,因为我已经有了计数。
答案 0 :(得分:1)
我想也可以使用这个解决方案,如果个别数字和共享区域可用draw.triple.venn(area1,area2,area3,n12,n23,n13,n123)其中area是teh toatal size和nxy是areax和areay之间的共享区域。 所以 draw.triple.venn(130868,126842,120249,125901,118086,119360,117898),我发送维恩图图像,但我需要更多的声誉!
答案 1 :(得分:0)
这是一种执行它的黑客方式。我生成包含由整数组成的假成员的人工集。但它有效
require(VennDiagram)
lines = "1 1 1 117898
1 1 0 125901
1 0 1 119360
0 1 1 118086
1 0 0 3505
0 1 0 753
0 0 1 701
0 0 0 0"
con <- textConnection(lines)
data <- read.table(con)
names(data) = c('G','S','P')
close(con)
sets = vector(mode = 'list', length = ncol(data)-1)
names(sets) = names(data)[1:(ncol(data)-1)]
lastElement = 0
for (i in 1:nrow(data)){
elements = lastElement:(lastElement+data[i,ncol(data)]-1)
lastElement = elements[length(elements)]+1
for (j in 1:(ncol(data)-1)){
if (data[i,j]==1){
sets[[j]]=c(sets[[j]],elements)
}
}
}
laVenn = venn.diagram(sets,filename=NULL)
plot.new()
grid.draw(laVenn)