【问题标题】:Overlapping graphs using R or Excel使用 R 或 Excel 重叠图形
【发布时间】:2011-06-05 17:49:08
【问题描述】:

我有以下矩阵,我想使用 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%。

【问题讨论】:

标签: excel r graph overlap


【解决方案1】:

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

正如 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 表示在所有三个集合中,这在您的矩阵中缺失并且无法添加到那里。对于您的样本数据,当 a&b 有 0.7 重叠并且 b&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)

【讨论】:

  • 感谢您的回答。您能否再解释一下您是如何将我的矩阵映射到您的函数中的?你为什么又加了0.5?我在哪里可以把这个数字放在我的矩阵中?什么是 101、110 或 100 值?另外,我的值是0.003,0.0047等,会不会产生问题?
  • @user751637 我添加了一些解释。检查它是否回答了您的疑问。
猜你喜欢
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 2017-09-02
  • 2018-09-01
相关资源
最近更新 更多