如何强制标签适合VennDiagram?

Nie*_*ein 10 r venn-diagram

我使用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");
Run Code Online (Sandbox Code Playgroud)

这给出了这个数字:

在此输入图像描述

图中左侧和右侧的名称被截断,底部也有一点名称.我尝试改变宽度,但这使得维恩图本身变宽,名字仍然被切断.

如何通过在图表的左侧和右侧添加更多的空格,或者将名称更多地推向维恩图来制作VennDiagram以使其包含全名?

use*_*650 10

您可以使用标签文本来证明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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

另一种选择(如果有点快速破解)将删除cat.just参数并设置较小的grid::viewport.您可能需要调整图形窗口/输出设备的宽度(即pdf(..., width=...)):

# 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)

grid.newpage()
pushViewport(viewport(width=unit(0.8, "npc"), height = unit(0.8, "npc")))
grid.draw(v)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 大概。但我怀疑匹配哪些标签是合理的可能会很棘手。一个快速的技巧可能是设置一个较小的“grid::viewport”。因此,使用不带 `cat.just` 行的示例: `grid.newpage() ;PushViewport(视口(宽度=单位(0.8,“NPC”),高度=单位(0.8,“NPC”))); grid.draw(v)` 。您可能需要调整图形窗口/输出设备的宽度(即“pdf(..., width=...)”)。可能值得提出一个新问题以获得更多想法。 (2认同)
  • 尝试了您的建议并解决了问题 (2认同)