使用R或Excel重叠图形
我有以下矩阵,我想用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
例如,上表中表明,a
和b
有50%的重叠,而a
和c
有70%。
如果你想重叠,那么你错过了一个数字 - 重叠所有三个: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)
一些额外的解释。
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.5?我可以在哪里把这个数字放在我的矩阵中?什么是101,110或100的值?另外,我的值是0.003,0.0047等。它会产生问题吗? – user751637 2011-06-07 01:50:57
@ user751637我添加了一些解释。检查它是回答你的疑惑。 – Marek 2011-06-07 12:12:33
你lloking的东西像维恩图? – Aniko 2011-06-05 18:06:19
@Aniko,是维恩图使用上述数据 – user751637 2011-06-05 18:18:42
http://stackoverflow.com/questions/1428946/venn-diagrams-with-r – 2011-06-05 18:37:56