【发布时间】:2016-11-12 14:12:22
【问题描述】:
我想要一个维恩图,说明两个矩阵p.mat.p 和p.mat.t 在设置alpha 时具有相同的维度。
伪代码
- 如果两个矩阵匹配,则将项目添加到交集;它可以匹配 FALSE 或 TRUE;否则将项目留在交叉点之外,就像通常使用维恩图一样
- 将矩阵单元的 ID 放在维恩图上
两种方法:矩阵与vennDiagram 和venn 与列表。
数据
p.mat.p
1 2 3 4 5 6 7 8 9 10 11
1 TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
2 TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
3 TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
4 FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
5 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
6 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
7 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
8 FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
9 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
10 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
11 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
p.mat.t
1 2 3 4 5 6 7 8 9 10 11
1 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
2 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
3 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
4 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
5 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
6 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
7 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
8 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
9 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
10 FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE
11 TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
矩阵代码
library("psych")
library("gplots")
library("limma") # http://www.ats.ucla.edu/stat/r/faq/venn.htm
ids <- seq(1,11)
M.cor <- cor(mtcars)
colnames(M.cor) <- ids
rownames(M.cor) <- ids
p.mat <- psych::corr.test(M.cor, adjust = "none", ci = F)
alpha <- .00000005
p.mat.p <- (p.mat[["p"]] < alpha)
str(p.mat.p)
print(p.mat.p)
p.mat.t <- (p.mat[["t"]] < alpha)
str(p.mat.t)
print(p.mat.t)
# http://www.ats.ucla.edu/stat/r/faq/venn.htm
c3 <- cbind( c(p.mat.p), c(p.mat.t))
a <- vennCounts(c3)
vennDiagram(a)
在圆圈及其交点上没有 ID 的输出因此不够
预期输出:在交叉点、圆和其他地方带有 ID 的维恩图。
有列表
我认为这里必须使用列表,因为 venn 只支持它们
library("corrplot")
library("psych")
ids <- seq(1,11)
M.cor <- cor(mtcars)
colnames(M.cor) <- ids
rownames(M.cor) <- ids
p.mat <- psych::corr.test(M.cor, adjust = "none", ci = F)
alpha <- .00000005
# http://stackoverflow.com/q/2471188/54964
p.mat.p <- (p.mat[["p"]] < alpha)
p.mat.p <- as.list(p.mat.p)
p.mat.t <- (p.mat[["t"]] < alpha)
p.mat.t <- as.list(p.mat.t)
venn(list(first.vector = p.mat.p, second.vector = p.mat.t))
输出:121 在路口错了
R:3.3.1
操作系统:Debian 8.5
【问题讨论】:
-
看来你真的不知道如何描述你想要的东西。
-
矩阵分布?而且您只显示上三角元素。对了,你怎么能再清楚点????
-
在哪里导入 vennCounts 和 vennDiagram?
'> a <- vennCounts(c3) Error: could not find function "vennCounts" > vennDiagram(a) Error: could not find function "vennDiagram"' -
@Masi
"package ‘limma’ is not available (for R version 3.3.2)",请注意 limma 在 3.3.2 中已经贬值了——不幸的是,这里无法正常工作。 -
@hhh 是的。请完全按照此处的说明进行操作ats.ucla.edu/stat/r/faq/venn.htm
标签: r list matrix venn-diagram