Диаграммы Венна с R?

Существуют ли какие-либо другие пакеты для создания диаграмм Венна в R, кроме пакета limma?

У кого-нибудь есть советы?

Вот несколько примечаний по построению диаграмм Венна с помощью limma пакетов.


person JD Long    schedule 15.09.2009    source источник
comment
Привет, я все еще ищу пакет, который будет рисовать пропорциональные диаграммы Венна. Вот самая близкая вещь, которую я нашел 8 лет назад, stat. ethz.ch/pipermail/r-help/2003-February/029393.html. Я надеялся, что с этим будет более поздняя разработка.   -  person andrewj    schedule 04.03.2011
comment
caleydo.org/tools/upset   -  person wikiselev    schedule 05.12.2016


Ответы (8)


У Дункана Мердока есть пакет venn, который нет на КРАНе. (спасибо Габору Гротендику )

Вы также можете прочитать об этом в "Journal of Statistical Software".

person Shane    schedule 15.09.2009
comment
ссылка на пакет не работает - person MichaelChirico; 24.03.2018

Список пакетов диаграмм Венна:

person bala    schedule 15.02.2013

На R-forge есть пакет Vennerable.

source("http://bioconductor.org/biocLite.R")
biocLite(c("graph", "RBGL", "gtools", "xtable"))
install.packages("Vennerable", repos="http://R-Forge.R-project.org")

Диаграмма Венна

person Marek    schedule 06.06.2011

Функция venn в пакете gplots также полезна, если вам нужно создать диаграмму Венна из наборов 4/5.

person Paolo    schedule 16.09.2009

Я использую две пользовательские функции, которые помогают. Моя реализация venndia строит диаграмму Венна и возвращает списки совпадений между A и B (и C). См. код ниже.

С ними вы можете

vd <- venndia(A=LETTERS[1:15], B=LETTERS[5:20], getdata=TRUE)

который будет отображать и возвращать данные. вы можете отключить возврат данных, выполнив

venndia(A=LETTERS[1:15], B=LETTERS[5:20])

так как getdata по умолчанию имеет значение FALSE. /Дэниел

circle <- function(x, y, r, ...) {
    ang <- seq(0, 2*pi, length = 100)
    xx <- x + r * cos(ang)
    yy <- y + r * sin(ang)
    polygon(xx, yy, ...)
}

venndia <- function(A, B, C, getdata=FALSE, ...){
    cMissing <- missing(C)
    if(cMissing){ C <- c() }

    unionAB <- union(A, B)
    unionAC <- union(A, C)
    unionBC <- union(B, C)
    uniqueA <- setdiff(A, unionBC)
    uniqueB <- setdiff(B, unionAC)
    uniqueC <- setdiff(C, unionAB)
    intersAB <- setdiff(intersect(A, B), C)
    intersAC <- setdiff(intersect(A, C), B)
    intersBC <- setdiff(intersect(B, C), A)
    intersABC <- intersect(intersect(A, B), intersect(B, C))

    nA <- length(uniqueA)   
    nB <- length(uniqueB)
    nC <- length(uniqueC)

    nAB <- length(intersAB)
    nAC <- length(intersAC)
    nBC <- length(intersBC)

    nABC <- length(intersABC)   

    par(mar=c(2, 2, 0, 0))
    plot(-10, -10, ylim=c(0, 9), xlim=c(0, 9), axes=FALSE, ...)
    circle(x=3, y=6, r=3, col=rgb(1,0,0,.5), border=NA)
    circle(x=6, y=6, r=3, col=rgb(0,.5,.1,.5), border=NA)
    circle(x=4.5, y=3, r=3, col=rgb(0,0,1,.5), border=NA)

    text( x=c(1.2, 7.7, 4.5), y=c(7.8, 7.8, 0.8), c("A", "B", "C"), cex=3, col="gray90" )

    text(
        x=c(2, 7, 4.5, 4.5, 3, 6, 4.5), 
        y=c(7, 7, 2  , 7  , 4, 4, 5), 
        c(nA, nB, nC, nAB, nAC, nBC, nABC), 
        cex=2
    )

    if(getdata){
        list(A=uniqueA, B=uniqueB, C=uniqueC, 
            AB=intersAB , AC=intersAC , BC=intersBC , 
            ABC=intersABC
        )
    }
}
person Daniel    schedule 26.09.2009

Это приходит очень поздно, но может быть полезно другим, кто ищет ответ: VennDiagram, в CRAN здесь.

Он позволяет использовать несколько наборов (четыре набора для диаграмм Венна, 3 набора для диаграмм Эйлера), настраиваемые цвета и шрифты, простой синтаксис и, что самое главное, размер кругов пропорционален размеру наборов данных (по крайней мере, при сравнении двух данных). наборы). Установить:

install.packages("VennDiagram")
library(VennDiagram)

Для тех, кто использует пакеты биопроводников и работает с геномными координатами, недавно vennDiagram был ="nofollow">реализован в пакете ChIPpeakAnno (версия 2.5.12) и допускает красивые пересечения геномных координат, например, пиков Chip-seq. Первым пользователям может потребоваться установить пакет разработки.

peaks1 = RangedData(IRanges(start = c(967654, 2010897, 2496704),
    end = c(967754, 2010997, 2496804), names = c("Site1", "Site2", "Site3")),
    space = c("1", "2", "3"), strand=as.integer(1),feature=c("a","b","f"))

peaks2 = RangedData(IRanges(start = c(967659, 2010898,2496700,3075866,3123260),
    end = c(967869, 2011108, 2496920, 3076166, 3123470),
    names = c("t1", "t2", "t3", "t4", "t5")),
    space = c("1", "2", "3", "1", "2"), strand = c(1, 1, -1,-1,1), feature=c("a","b","c","d","a"))

makeVennDiagram(RangedDataList(peaks1,peaks2, peaks1, peaks2), NameOfPeaks=c("TF1", "TF2","TF3", "TF4"),
     totalTest=100,useFeature=TRUE, main="Venn Diagram",
    col = "transparent",fill = c("cornflowerblue", "green", "yellow", "darkorchid1"),
    alpha = 0.50,label.col = c("orange", "white", "darkorchid4", "white", "white", "white", "white", "white", "darkblue", "white", "white", "white", "white", "darkgreen", "white"), cat.col = c("darkblue", "darkgreen", "orange", "darkorchid4"))
person fridaymeetssunday    schedule 27.09.2012
comment
vennDiagram позволяет использовать максимум 5 наборов - person OganM; 05.02.2015
comment
Я подошел к газете, и это up to four sets and Euler diagrams with up to three sets. - person fridaymeetssunday; 06.02.2015
comment
Начиная с версии 1.6.16, VennDiagram имеет функцию draw.quintuple.venn(), рисующую диаграмму Венна для пяти наборов. - person Stephan Kolassa; 01.10.2015

Вот ссылка на другую версию для данных с тремя переменными: http://elliotnoma.wordpress.com/2011/02/09/venn-diagram/

Код также доступен в пакете ColorfulVennPlot: http://cran.r-project.org/web/packages/colorfulVennPlot/index.html

person pitabread    schedule 31.01.2013
comment
Обратите внимание, что вы должны публиковать полезные моменты ответа здесь, на этом сайте, иначе ваше сообщение может быть удалено как Не ответ. Вы все еще можете включить ссылку, если хотите, но только как «ссылку». Ответ должен стоять сам по себе, без ссылки. - person Andrew Barber; 31.01.2013

Я бы рекомендовал пакет VennDiagram: http://cran.r-project.org/web/packages/VennDiagram/VennDiagram.pdf

На паке 19 вы найдете 10 паков очень хороших примеров (как продвинутых, так и упрощенных). На данный момент я не нашел ничего, что он не может сделать, что мне нужно.

person Stenemo    schedule 21.03.2014