Другие пакеты для выполнения диаграмм Венна в R, кроме пакета limma.Венн Диаграммы с R?
У кого-нибудь есть советы?
Вот некоторые notes on doing Venn diagrams с пакетами limma.
Другие пакеты для выполнения диаграмм Венна в R, кроме пакета limma.Венн Диаграммы с R?
У кого-нибудь есть советы?
Вот некоторые notes on doing Venn diagrams с пакетами limma.
Duncan Murdoch has a venn package, который не находится на CRAN. (hat tip to Gabor Grothendieck)
Вы также можете прочитать об этом in the "Journal of Statistical Software".
Функция venn в пакете gplots также полезна, если вам нужно создать диаграмму Венна из 4/5 наборов.
Я использую две пользовательские функции, которые подходят к трюку. Моя реализация venndia отображает диаграмму venn и возвращает списки перекрытий между 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 по умолчанию. /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
)
}
}
Существует 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")
Это приходит очень поздно, но это могло бы полезным для других, которые ищут ответ: VennDiagram, на CRAN here.
Он позволяет несколько наборов (четыре набора для venn, 3 набора для диаграмм Эйлера), настраиваемые цвета и шрифты, простой синтаксис и, самое главное, размер кругов, пропорциональный размеру наборов данных (по крайней мере, при сравнении 2 наборов данных). Для того, чтобы установить:
install.packages("VennDiagram")
library(VennDiagram)
Для тех, кто использует Bioconductor пакеты и работу с геномными координатами, в последнее время была в Диаграмме Венна пакет ChIPpeakAnno (версии 2.5.12) implemented и позволяет довольно пересечения геномных координат, например, чип-SEQ пики. Для ранних пользователей вам может потребоваться установить 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 допускает максимум 5 наборов – OganM
Я пошел в газету, и это «до четырех наборов и диаграмм Эйлера с тремя наборами». – fridaymeetssunday
Начиная с версии 1.6.16, 'VennDiagram' имеет функцию' draw.quintuple.venn() ', которая рисует диаграмму Венна для пяти наборов. –
Вот ссылка на другую версию для 3-переменных данных: http://elliotnoma.wordpress.com/2011/02/09/venn-diagram/
код также доступен в пакете colorfulVennPlot: http://cran.r-project.org/web/packages/colorfulVennPlot/index.html
Обратите внимание, что вы должны размещать полезные пункты ответа здесь, на этом сайте, или ваши риски, связанные с публикацией, удаляются как [«Не ответ»] (http://meta.stackexchange.com/q/8259). Вы можете по-прежнему включать ссылку, если хотите, но только как ссылку. Ответ должен стоять сам по себе, не нуждаясь в ссылке. –
Я бы рекомендовал пакет Диаграмма Венна: http://cran.r-project.org/web/packages/VennDiagram/VennDiagram.pdf
На выпечке 19 вы найдете 10 паков очень хороших примеров (как продвинутых, так и упрощенных). На данный момент я не нашел ничего, что не может сделать, что мне нужно.
Привет, Я все еще ищу пакет, который будет рисовать пропорциональные диаграммы Венна. Вот самое близкое, что я нашел от 8 лет назад, https://stat.ethz.ch/pipermail/r-help/2003-February/029393.html. Я надеялся, что с этим последует более новая разработка. – andrewj
http://www.caleydo.org/tools/upset/ – wikiselev