2014-01-20 22 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