2012-04-11 6 views
3

Я пытаюсь сделать 4-Way диаграмма Венна в R. У меня есть эти данные, которые я хочу поставить на диаграмме:4-полосная диаграмма Венна в R?

enter image description here

Может кто-нибудь дать мне предложение, как это сделать? Я пытаюсь использовать функцию vennDiagram(), но это не работает, потому что это диаграмма 4way.

Я также пытаюсь использовать пакет VennDiagram, но на самом деле путают, как данные «распределяются» в нужное место на диаграмме. Я использую этот код:

library (VennDiagram) 
venn.diagram(
    x=list(
    I=c(1:18,19:31,32:119,125:129,130:192,193:144,145:326,327:373), 
    VI=c(516:542,510:515,420:497,498:509,145:326,327:373,130:192,193:144), 
    II=c(19:31,32:119,145:326,327:373,374:378,378:419,420:497,498:509), 
    III=c(506:509,378:419,32:119,125:129,130:192,145:326,420:497,510:515) 
    ), 
    filename = "4Way_Venn.tiff", 
    col = "black", 
    lty = "dotted", 
    lwd = 4, 
    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"), 
    cex = 2.5, 
    fontfamily = "serif", 
    fontface = "bold", 
    cat.col = c("darkblue", "darkgreen", "orange", "darkorchid4"), 
    cat.cex = 2.5, 
    cat.fontfamily = "serif" 
    ); 

Может ли кто-нибудь мне помочь? возможно, с более простым решением, чем тот, который использует пакет VennDiagram.

+0

Не Vennerable для поддержки R этого? Я написал решение с использованием Python и gnuplot. Рад поделиться. –

ответ

3

Возможно, мне не хватает здесь точки, но я не уверен, как вы хотите использовать эти «подсчеты» при создании вашей диаграммы venn? Из колонок «c1» на «c4» вы можете очень легко сделать с помощью диаграммы Венна venneuler пакет:

require(venneuler) 
#here I replicate your data 
#because it's repeatable, you can use `rep` function to generate it 
c1 <- rep(c(0,1),each=8) 
c2 <- rep(c(0,1),each=4,times=2) 
c3 <- rep(c(0,1),each=2,times=4) 
c4 <- rep(c(0,1),times=8) 
#put your data into matrix 
m <- as.matrix(data.frame(C1=c1,C2=c2,C3=c3,C4=c4)) 
#plot it 
v = venneuler(m) 
plot(v) 

enter image description here

+2

Counts - количество раз, которое происходит в каждом случае, это сводка данных, и она должна быть на диаграмме. Например, всего 26 раз в данных были все c1, c2, c3 и c4 имеют значение 0 – Peiska

+0

@Peiska: Хорошо, я понимаю, что вы имеете в виду помощника. Попробует пересмотреть его, когда у меня будет больше времени. –

+0

Я не думаю, что это решает проблему, но, возможно, поможет http://stackoverflow.com/questions/30638610/how-to-draw-venn-diagram-using-6-sets/31148761#31148761. – timelyportfolio

3

Просто будьте осторожны: Я пытался строить 4 (и выше) -WAY диаграммы Венна в пару пакетов, которые поддерживали такую ​​возможность, и, по крайней мере, в одном случае подпрограммы были неправильно отображены. Подмножество, например, полностью содержащееся в другом, было нарисовано с некоторой частью его области, выходящей за пределы родительского подмножества. К сожалению, я не помню, какой пакет это сделал.
Итак, мой ответ: попробуйте venneuler, так как GOA сказал, попробуйте require(sos); ???venn, и не забудьте тщательно протестировать каждый пакет, чтобы убедиться, что он правильно выполняет перекрестки .