2011-06-05 50 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