r venn-diagram

Diagramas de Venn con R?



venn-diagram (8)

Aquí hay una referencia a otra versión para datos de 3 variables: http://elliotnoma.wordpress.com/2011/02/09/venn-diagram/

El código también está disponible en el paquete colorfulVennPlot: colorfulVennPlot

Hay otros paquetes para hacer diagramas de Venn en R además del paquete limma.

Alguien tiene consejos?

Aquí hay algunas notas sobre cómo hacer diagramas de Venn con los paquetes de limma.


Esto llega muy tarde, pero podría ser útil para otros que buscan una respuesta: VennDiagram , en CRAN here .

Permite múltiples conjuntos (cuatro conjuntos para venn, 3 conjuntos para diagramas de Euler), colores y fuentes personalizables, sintaxis simple y, lo mejor de todo, el tamaño de los círculos es proporcional al tamaño de los conjuntos de datos (al menos al comparar 2 datos) conjuntos). Instalar:

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

Para aquellos que usan paquetes de bioconductores y trabajan con coordenadas genómicas, recientemente vennDiagram se implemented en el paquete ChIPpeakAnno (versión 2.5.12) y permite intersecciones bonitas de coordenadas genómicas de, por ejemplo, picos Chip-seq. Para los primeros usuarios, es posible que deba instalar el paquete de desarrollo .

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"))


Hay un paquete Vennerable en R-forge .

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


La función venn en el paquete gplots también es útil si necesita crear un Diagrama de Venn de 4/5 series.




Yo uso dos funciones personalizadas para el truco. Mi implementación de Venndia traza el diagrama de venn y devuelve listas de superposiciones entre A y B (y C). Vea el código a continuación.

Con estos, puedes

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

que trazará y devolverá los datos. usted puede desactivar la devolución de los datos haciendo

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

ya que getdata es FALSO por defecto. / Daniel

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 ) } }