使用R或Excel重叠graphics

我有以下matrix,我想绘制使用R(首选)或Excel重叠的graphics。

abc a 1 0.5 0.7 b 0.5 1 0.4 c 0.7 0.4 1 

例如,上表显示ab具有50%重叠,而ac具有70%。

如果你想重叠,那么你错过了一个数字 – 重叠所有三个: abc

正如Aniko在评论中写的,你可以使用Venn图,例如R-forge的Vennerable 。

安装需要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) 

Venn diagram


一些额外的解释。

Vennerable包的数据结构需要提供集合名称(在你的情况下为"a""b""c" )和每个交集的频率/比例。 这个0/1名称标识子集: 1表示“在集合中”, 0表示“不在集合中”。 所以例如:

  • 100表示a ,而不是b ,不在c
  • 011表示不在a ,在b ,在c

所以111意味着在所有三个集合,这是你的matrix中缺less,它不能被添加在那里。 对于您的样本数据,当a和b有0.7重叠,b&c有0.4时,意味着同时在三组中至less有0.1(或者我错过了对这个数字的解释)。 (注:我认为我高估了这个0.5,应该低于0.4)

您可以在创buildmatrix之前将您的数据准备到维恩图,例如:

 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)