Existen otros paquetes para hacer diagramas de Venn en R además del paquete de limma.Diagramas de Venn con R?
¿Alguien tiene consejos?
Aquí hay algunos notes on doing Venn diagrams con los paquetes de limma.
Existen otros paquetes para hacer diagramas de Venn en R además del paquete de limma.Diagramas de Venn con R?
¿Alguien tiene consejos?
Aquí hay algunos notes on doing Venn diagrams con los paquetes de limma.
Duncan Murdoch has a venn package, que no está en CRAN. (hat tip to Gabor Grothendieck)
También puede leer al respecto in the "Journal of Statistical Software".
La función venn en el paquete gplots también es útil si necesita crear un diagrama de Venn de 4/5 conjuntos.
Utilizo 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, se puede
vd <- venndia(A=LETTERS[1:15], B=LETTERS[5:20], getdata=TRUE)
cual tanto la trama y devolver los datos. puede desactivar la devolución de 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
)
}
}
Hay Vennerable package on R-forge.
source("http://bioconductor.org/biocLite.R")
biocLite(c("graph", "RBGL", "gtools", "xtable"))
install.packages("Vennerable", repos="http://R-Forge.R-project.org")
Esto viene muy tarde pero podría útil para los demás en busca de 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 cuando se comparan 2 conjuntos de datos). Para instalar:
install.packages("VennDiagram")
library(VennDiagram)
Para aquellos que utilizan paquetes de Bioconductor y trabajar con coordenadas genómicas, recientemente diagrama de venn era implemented en el paquete ChIPpeakAnno (versión 2.5.12) y permite bonitas intersecciones de coordenadas genómicas de, por ejemplo, el chip-ss picos. Para los primeros usuarios, es posible que deba instalar el development package.
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"))
vennDiagram permite un máximo de 5 conjuntos – OganM
Fui al papel, y es 'hasta cuatro conjuntos y diagramas de Euler con hasta tres conjuntos. ' – fridaymeetssunday
A partir de la versión 1.6.16, 'VennDiagram' tiene una función' draw.quintuple.venn() ', que dibuja un diagrama de Venn para cinco conjuntos. –
Aquí se hace referencia a otra versión de los datos de 3 variables: http://elliotnoma.wordpress.com/2011/02/09/venn-diagram/
El código también está disponible en el paquete colorfulVennPlot: http://cran.r-project.org/web/packages/colorfulVennPlot/index.html
Tenga en cuenta que debe publicar los puntos útiles de una respuesta aquí, en este sitio, o su publicación corre el riesgo de ser eliminada como ["No es una respuesta"] (http://meta.stackexchange.com/q/8259). Puede incluir el enlace si lo desea, pero solo como una "referencia". La respuesta debería ser independiente sin necesidad del enlace. –
Yo recomendaría el diagrama de venn paquete: http://cran.r-project.org/web/packages/VennDiagram/VennDiagram.pdf
En pake 19 encontrará 10 pakes de muy buenos ejemplos (tanto avanzados como simplificados). Hasta el momento no he encontrado nada que no pueda hacer que lo necesite.
Hola, todavía estoy buscando un paquete que dibuje diagramas de Venn proporcionales. Aquí está lo más cercano que encontré de hace 8 años, https://stat.ethz.ch/pipermail/r-help/2003-February/029393.html. Tenía la esperanza de que hubiera un desarrollo más reciente con esto. – andrewj
http://www.caleydo.org/tools/upset/ – wikiselev