Как сделать R Vennerable Venn Diagram из двоичных матриц?

Изучение основных примеров показывает, что ввод Vennerable должен содержать список векторов здесь. Итак, я делаю следующее: беру бинарные матрицы p-значений и пытаюсь создать диаграмму Венна на основе их общих характеристик.

library("Vennerable")
library('limma') # vennCounts, vennDiagram
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 <- 0.000000005

lista <- list(
  as.vector(p.mat[["p"]] < alpha), 
  as.vector(p.mat[["r"]] < alpha),
  as.vector(p.mat[["t"]] < alpha)
  )
# List of 3 vectors    

Vstem <- Venn(lista)

plot(Vstem, doWeights = TRUE, type = "circles")

Рис. 1 Неверный вывод

введите здесь описание изображения

Ожидаемый результат: диаграмма Почтенного Венна из трех кругов.

СТАУТ

List of 3
 $ : logi [1:121] TRUE TRUE TRUE FALSE FALSE FALSE ...
 $ : logi [1:121] FALSE TRUE TRUE TRUE FALSE TRUE ...
 $ : logi [1:121] FALSE TRUE TRUE TRUE FALSE TRUE ...
Formal class 'Venn' [package "Vennerable"] with 2 slots
  ..@ IndicatorWeight : int [1:8, 1:4] 0 1 0 1 0 1 0 1 0 0 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:8] "000" "100" "010" "110" ...
  .. .. ..$ : chr [1:4] "1" "2" "3" ".Weight"
  ..@ IntersectionSets:List of 8
  .. ..$ 000: NULL
  .. ..$ 100: NULL
  .. ..$ 010: NULL
  .. ..$ 110: NULL
  .. ..$ 001: NULL
  .. ..$ 101: NULL
  .. ..$ 011: NULL
  .. ..$ 111: logi [1:2] TRUE FALSE

R: 3.3.1
ОС: Debian 8.5


person Léo Léopold Hertz 준영    schedule 14.11.2016    source источник
comment
Пересечение выглядит так, как будто оно использует ИСТИНА/ЛОЖЬ (0/1) в качестве меток, что, я сомневаюсь, предназначено именно для этого. Попробуйте вместо этого использовать which, чтобы получить метки, т.е. which(p.mat[["p"]] < alpha) и т. д.   -  person user20650    schedule 14.11.2016
comment
@user20650 user20650 Вроде правильно. Я сделал вики об этом со ссылкой на вас. Однако эти большие нулевые области странные.   -  person Léo Léopold Hertz 준영    schedule 14.11.2016
comment
yup выглядит не совсем правильно. У меня это не установлено, поэтому я не могу помочь, но похоже, что размер кругов масштабируется до подсчета, но пересечения не масштабируются: возможно, для этого есть аргумент? [вторая мысль, в некоторых случаях я думаю, что их масштабирование также затруднит (если не сделает невозможным) расположение разделов)   -  person user20650    schedule 14.11.2016
comment
@user20650 user20650 Да, это должно быть plot(Vstem, doWeights = TRUE, type = "circles"), где особенно doWeights = TRUE, но оно делает обратное тому, что должно делать.   -  person Léo Léopold Hertz 준영    schedule 14.11.2016


Ответы (1)


ответ пользователя 20650 в комментарии

lista <- list(
  which(p.mat[["p"]] < alpha), #as.vector(p.mat[["p"]] < alpha), 
  which(p.mat[["r"]] < alpha), #as.vector(p.mat[["r"]] < alpha),
  which(p.mat[["t"]] < alpha) #as.vector(p.mat[["t"]] < alpha)
  )

Выход

введите здесь описание изображения

Билет: #39 и #40

person Community    schedule 14.11.2016