【问题标题】:How to force the labels to fit in VennDiagram?如何强制标签适合 VennDiagram?
【发布时间】:2014-01-20 12:40:54
【问题描述】:

我使用 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");

这给出了这个数字:

图左右的名字被剪掉了,底部的名字也少了一点。我尝试更改宽度,但这会使维恩图本身变宽,并且名称仍然被截断。

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

【问题讨论】:

    标签: r venn-diagram


    【解决方案1】:

    您可以使用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)
    

    另一个选择(如果有点快速破解的话)是删除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)
    

    【讨论】:

    • 是否可以自动执行此操作,因为我正在生成数百个维恩图?
    • 可能。但我怀疑它可能会变得棘手匹配哪些标签是合理的。一个快速的技巧可能是设置一个更小的grid::viewport。所以使用没有cat.just 行的示例:grid.newpage() ; pushViewport(viewport(width=unit(0.8, "npc"), height = unit(0.8, "npc"))); grid.draw(v)。您可能需要调整图形窗口/输出设备的宽度(即pdf(..., width=...))。可能值得提出一个新问题来获得更多想法。
    • 尝试了您的建议并解决了问题
    猜你喜欢
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多