如果你想重叠,那么你错过了一个数字 - 重叠所有三个:a、b、c。
正如 Aniko 在评论中所写,您可以使用维恩图,例如Vennerable from R-forge.
安装需要一些来自 BioConductor 的软件包:
source("http://bioconductor.org/biocLite.R")
biocLite(c("graph", "RBGL", "gtools", "xtable"))
install.packages("Vennerable", repos="http://R-Forge.R-project.org")
您可以正确准备数据:
require(Vennerable)
x <- Venn(
SetNames = c("a", "b", "c"),
Weight = c(`100`=1, `010`=1, `001`=1,
`110`=0.5, `101`=0.7, `011`=0.4,
`111`=.5) # I made this up cause your question miss it
)
然后瞧:
plot(x, doWeights=TRUE)
一些额外的解释。
Vennerable 包的数据结构需要提供集合名称(在您的情况下为"a"、"b"、"c")和每个相交的频率/比例。这个 0/1 名称标识子集:1 表示“在集合中”,0 表示“不在集合中”。例如:
-
100 表示在a 中,不在b 中,不在c 中,
-
011 表示不在a,在b,在c
所以111 表示在所有三个集合中,这在您的矩阵中缺失并且无法添加到那里。对于您的样本数据,当 a&b 有 0.7 重叠并且 b&c 有 0.4 时,意味着至少 0.1 同时在三个集合中(或者我错过了对这个数字的解释)。 (注意:我认为我高估了这个 0.5,因为它应该低于 0.4)
您可以在创建矩阵之前将数据准备到维恩图,例如:
X <- list(
a = c("One", "Two", "Three"),
b = c("One", "Three", "Four", "Five", "Seven"),
c = c("Three", "Five", "Eight", "Nine", "Ten")
)
x <- Venn(X)
x
# A Venn object on 3 sets named
# a,b,c
# 000 100 010 110 001 101 011 111
# 0 1 2 1 3 0 1 1
plot(x, doWeights=TRUE)