2011-06-05 100 views
1

我有以下矩阵,我想用R(首选)或Excel绘制重叠图形。使用R或Excel重叠图形

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

例如,上表中表明,ab有50%的重叠,而ac有70%。

+1

你lloking的东西像维恩图? – Aniko 2011-06-05 18:06:19

+0

@Aniko,是维恩图使用上述数据 – user751637 2011-06-05 18:18:42

+3

http://stackoverflow.com/questions/1428946/venn-diagrams-with-r – 2011-06-05 18:37:56

回答

0

如果你想重叠,那么你错过了一个数字 - 重叠所有三个:a,b,c

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

Venn diagram


一些额外的解释。

Vennerable包的数据结构需要提供集合名称("a","b","c")以及每个相交的频率/比例。此0/1名称标识子集:1表示“在集合中”,0表示“未集合”。因此,如:

  • 100意味着a,而不是在b,而不是在c
  • 011意味着不a,在b,在c

所以111意味着在所有三组,这是矩阵中缺失的,不能在那里添加。对于您的样本数据,当一个& b有0.7重叠和b & c有0.4意味着在同一时间至少有三个集合(或者我错过了对这个数字的解释)。 (注:我想我高估了这个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) 
+0

感谢您的回答。你能不能多解释一下,你是如何在你的函数中映射矩阵的?为什么还要加0.5?我可以在哪里把这个数字放在我的矩阵中?什么是101,110或100的值?另外,我的值是0.003,0.0047等。它会产生问题吗? – user751637 2011-06-07 01:50:57

+0

@ user751637我添加了一些解释。检查它是回答你的疑惑。 – Marek 2011-06-07 12:12:33