2014-01-20 4 views
9

Ich benutze Mengendiagramm ein Venn-Diagramm mit dem folgenden Beispielcode zu machen:Wie erzwingen Sie die Etiketten in VennDiagram passen?

library(VennDiagram) 
venn.diagram(list(shams_90d = 1:3, shams_90d_4h = 2:4, sham3__shams_90d = 3:5, 
      sham3_90d__shams = 5:7, sham3_90d__shams_4h = 6:9), 
      fill = c("red", "green", "blue", "yellow", "purple"), 
      alpha = c(0.5, 0.5,0.5, 0.5, 0.5), cex = 1,cat.fontface = 2, 
      lty =1, filename = "trial2.emf"); 

Welche diese Zahl gibt:

enter image description here

Die Namen auf der linken und rechten Seite der Figur abgeschnitten und ein bisschen vom Namen auch unten. Ich habe versucht, die Breite zu ändern, aber dadurch wird das Venn-Diagramm breiter, und die Namen werden immer noch abgeschnitten.

Wie kann ich das VennDiagram so machen, dass es die vollständigen Namen enthält, entweder durch Hinzufügen von mehr Leerzeichen links und rechts vom Diagramm, oder indem Sie die Namen mehr in Richtung Venn-Diagramm schieben?

Antwort

7

Sie können den Etikettentext mit cat.just rechtfertigen. Das Paket Referenzhandbuch gibt Informationen. wie man die Parameter übergibt.

Für Ihr Beispiel habe ich Versuch und Irrtum für die Begründung Werte.

# Plot 
v <- venn.diagram(list(shams_90d = 1:3, shams_90d_4h = 2:4, sham3__shams_90d = 3:5, 
        sham3_90d__shams = 5:7, sham3_90d__shams_4h = 6:9), 
       fill = c("red", "green", "blue", "yellow", "purple"), 
       alpha = c(0.5, 0.5,0.5, 0.5, 0.5), cex = 1,cat.fontface = 2, 
       lty =1, filename=NULL, cat.cex=0.8, 
       cat.just=list(c(0.6,1) , c(0,0) , c(0,0) , c(1,1) , c(1,0))) 

grid.newpage() 
grid.draw(v) 

enter image description here

+0

Gibt es trotzdem, dies automatisch zu tun, weil ich Hunderte von Venn-Diagramme zu erzeugen? – par

+1

Wahrscheinlich. aber ich vermute, dass es schwierig werden könnte, die passenden Labels zu finden. Ein schneller Hack könnte sein, ein kleineres 'grid :: viewport' zu setzen. Also benutze das Beispiel ohne die 'cat.just' Zeile:' grid.newpage(); pushViewport (Ansichtsfenster (Breite = Einheit (0.8, "npc"), Höhe = Einheit (0.8, "npc"))); grid.draw (v) '. Möglicherweise müssen Sie die Breite Ihres Grafikfensters/Ausgabegeräts anpassen (zB 'pdf (..., width = ...)'). Vielleicht lohnt es sich, eine neue Frage für weitere Gedanken zu stellen. – user20650

+1

Sie haben versucht, was Sie vorgeschlagen haben, und das Problem behoben – par