我有以下矩阵,我想用R(最好)或Excel绘制重叠图。
a b c
a 1 0.5 0.7
b 0.5 1 0.4
c 0.7 0.4 1
例如,上表显示a
和b
有50%重叠,而a
和c
有70%。
答案 0 :(得分:0)
如果您想要重叠,那么您错过了一个数字 - 重叠所有三个: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
表示所有三个集合,在矩阵中缺少,并且无法在那里添加。对于你的样本数据,当&amp; b有0.7重叠而b&amp; 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)