Если вы хотите перекрытие, то вы пропустили одно число - перекрытие всех трех: a
, b
, c
.
Когда Анико пишет в комментарии, вы можете использовать диаграммы Венна, например, Восхитительно от 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)