Перекрывающиеся графики с использованием R или Excel - PullRequest
1 голос
/ 05 июня 2011

У меня есть следующая матрица, и я хочу нарисовать перекрывающийся график, используя 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%.

1 Ответ

0 голосов
/ 06 июня 2011

Если вы хотите перекрытие, то вы пропустили одно число - перекрытие всех трех: 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)

Venn diagram


Некоторые дополнительные объяснения.

Структуры данных для 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)
...