2014-01-20 65 views
9

我用文氏图制作维恩图与下面的示例代码:如何强制标签符合VennDiagram?

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

哪个给出了这样的数字:

enter image description here

左侧和图的右侧的名字被切断,还有一些名字也在底部。我尝试改变宽度,但这使得维恩图本身变得更宽,并且名称仍然被切断。

如何制作VennDiagram,使其包含全名,方法是在图表的左侧和右侧添加更多空格,或者将名称更多地添加到维恩图表中?

回答

7

您可以用cat.just来证明标签文本的正确性。包参考手册给出了信息。关于如何传递参数。

对于你的例子,我用了试验和错误的理由值。

# 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

反正是有,因为我产生数百维恩图的自动做到这一点? – par

+1

也许吧。但我怀疑可能难以匹配哪些标签是合理的。快速入门可能是设置一个更小的'grid :: viewport'。因此,使用不带'cat.just'行的示例:'grid.newpage(); pushViewport(viewport(width = unit(0.8,“npc”),height = unit(0.8,“npc”))); grid.draw(v)'。您可能需要调整图形窗口/输出设备的宽度(即'pdf(...,width = ...)')。值得为更多的想法提出一个新的问题。 – user20650

+1

尝试了你的建议并解决了问题 – par