2012-04-11 11 views
3

Ich versuche, ein 4-Wege-Venn-Diagramm in der R. Ich habe diese Daten, die ich in dem Diagramm setzen will zu machen:4-Wege-Venn-Diagramm in R?

enter image description here

Kann mir jemand einen Vorschlag geben, wie es zu tun? Ich versuche, die Funktion vennDiagram() zu verwenden, aber das funktioniert nicht, weil es ein 4-Wege-Diagramm ist.

Ich versuche auch, das Paket VennDiagram zu verwenden, aber es ist wirklich verwirrend, wie die Daten an der richtigen Stelle im Diagramm "zugewiesen" werden. Ich verwende diesen Code:

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

Kann mir jemand helfen? vielleicht mit einer einfacheren Lösung als die mit dem VennDiagram-Paket.

+0

Hat Vennerable nicht für R Unterstützung dieses? Ich habe eine Lösung mit Python und gnuplot geschrieben. Glücklich zu teilen. –

Antwort

3

Ich könnte den Punkt hier fehlen, aber ich bin mir nicht sicher, wie wollen Sie diese "Zählungen" bei der Erstellung Ihres Venn-Diagramms verwenden? Aus der 'c1' Spalten 'c4' können Sie ganz einfach Venn-Diagramm mit venneuler Paket machen:

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

Die Anzahl ist die Häufigkeit, mit der jeder Fall auftritt, es ist eine Zusammenfassung der Daten, und es sollte in dem Diagramm sein. Zum Beispiel gibt es 26 mal in den Daten waren alle die c1, c2, c3 und c4 haben den Wert 0 – Peiska

+0

@Peiska: Ok ich sehe was du meinst Kumpel. Werde versuchen, es zu überarbeiten, wenn ich mehr Zeit habe. –

+0

Ich glaube nicht, dass dies das Problem löst, aber vielleicht hilft http://stackoverflow.com/questions/30638610/how-to-draw-venn-diagram-using-6-sets/31148761#31148761. – timelyportfolio

3

Nur Vorsicht: Ich habe versucht, Gebäude 4 (und höher) -Wege Venn-Diagramme in ein paar Pakete, die diese Fähigkeit unterstützten, und in mindestens einem Fall wurden die Unterräume nicht korrekt gezeichnet. Beispielsweise wurde eine Teilmenge, die vollständig in einer anderen enthalten war, mit einem Teil ihres Bereichs gezeichnet, der sich außerhalb der Elternteilmenge erstreckte. Leider weiß ich nicht, welches Paket das getan hat.
Also, meine Antwort ist: versuchen Sie venneuler wie GOA sagte, versuchen Sie require(sos); ???venn, und stellen Sie sicher, jedes Paket sorgfältig zu testen, um sicherzustellen, dass es die Kreuzungen korrekt rendern.