2013-01-09 1 views
3

J'ai utilisé la recette donnée ici avec beaucoup de succès. Cependant, pour les quelques derniers jours, cela ne semble pas fonctionner. Mon sessionInfo() se présente comme suit:Problèmes avec VennDiagram?

R version 2.15.2 (2012-10-26) 
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] grid  stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] VennDiagram_1.5.1 

loaded via a namespace (and not attached): 
[1] tools_2.15.2 

J'ai essayé ce qui suit, et n'a produit aucun résultat:

require(VennDiagram) 

venn.diagram(list(B = 1:1800, A = 1571:2020),fill = c("red", "green"), alpha = c(0.5, 0.5), cex = 2,cat.fontface = 4,lty =2, fontfamily =3, filename = "trial2.emf") 

Mais n'a produit aucun résultat.

Est-ce que je fais quelque chose de mal?

+0

Cela fonctionne pour moi. Pouvez-vous fournir un peu plus d'informations? Comment n'a-t-il pas produit de résultat? Y a-t-il eu une erreur? Votre session est vide? Que fait 'list.files (getwd(), '* .emf')' aboutir? – Justin

+0

@Justin Il n'y avait pas d'erreur, la session n'est pas vide et aucun fichier de sortie n'est généré. Pas du tout. Mais pour être sûr, pouvez-vous me dire comment regarder si la session est vide? – Sam

+0

Par vide, je voulais dire "propre". Quittez R et redémarrez-le. Ensuite, exécutez uniquement les deux commandes que vous avez incluses dans votre message. Aussi, assurez-vous que vous êtes dans le répertoire que vous pensez être. Vous pouvez trier cela avec les deux fonctions dans mon commentaire précédent. – Justin

Répondre

7

Une solution consiste à utiliser png() ou pdf() pour enregistrer le tracé. Nous demandons d'abord que nous pouvons tirer le tracé à l'écran à l'aide grid.draw():

library(VennDiagram) 
temp <- venn.diagram(list(B = 1:1800, A = 1571:2020), 
    fill = c("red", "green"), alpha = c(0.5, 0.5), cex = 2,cat.fontface = 4, 
    lty =2, fontfamily =3, filename = NULL) 
grid.draw(temp) 

Après avoir confirmé que, tout ce que nous devons faire pour le sauver est répéter la grid.draw() entre pdf() et dev.off()

library(grDevices) 

pdf(file="venn.pdf") 
    grid.draw(temp) 
dev.off() 

Comme décrit dans leurs fichiers d'aide, pdf() et png() ont des arguments pour contrôler des choses comme la taille de l'image, améliorant le contrôle de la qualité de l'image.

6

La réponse de MattBagg est excellente mais pour être complet, permettez-moi d'ajouter comment sauvegarder plusieurs diagrammes de Venn dans la même page - utile quand on compare plusieurs conditions. Quelque chose comme ceci: enter image description here Cette solution est un mash up-up des réponses MattBagg et nmel's enveloppés dans une fonction pdf().

# libraries 
library(VennDiagram) 
library(grid) 
library(gridBase) 
library(lattice) 

# create the diagrams 
temp1 <- venn.diagram(list(B = 1:1800, A = 1571:2020), 
    fill = c("red", "green"), alpha = c(0.5, 0.5), cex = 1,cat.fontface = 2, 
    lty =2, filename = NULL) 
temp2 <- venn.diagram(list(A = 1:1800, B = 1571:2020), 
    fill = c("red", "green"), alpha = c(0.5, 0.5), cex = 1,cat.fontface = 2, 
    lty =2, filename = NULL)  


# start new page 
plot.new() 

pdf("testpdf", width = 14, height = 7) 
# setup layout 
gl <- grid.layout(nrow=1, ncol=2) 
# grid.show.layout(gl) 

# setup viewports 
vp.1 <- viewport(layout.pos.col=1, layout.pos.row=1) 
vp.2 <- viewport(layout.pos.col=2, layout.pos.row=1) 

# init layout 
pushViewport(viewport(layout=gl)) 
# access the first position 
pushViewport(vp.1) 

# start new base graphics in first viewport 
par(new=TRUE, fig=gridFIG()) 

grid.draw(temp2) 

# done with the first viewport 
popViewport() 

# move to the next viewport 
pushViewport(vp.2) 

    grid.draw(temp2) 

# done with this viewport 
popViewport(1) 

dev.off() 
Questions connexes