【问题标题】:scaling triple Venn diagram in R with VennDiagram package使用 VennDiagram 包在 R 中缩放三重维恩图
【发布时间】:2012-07-30 18:05:53
【问题描述】:

有谁知道如何让 R 包 VennDiagram 根据集合大小缩放包含 3 个相交集的维恩图的圆圈?

我可以使用 venneular 包实现这种缩放,但与 VennDiagram 相比,我发现在其他图形选项方面这有点受限。

VennDiagram 包文档建议将参数 'scaled' 设置为 TRUE 应该可以解决问题,但我发现这会产生 3 个大小相等的圆圈。

包文档确实暗示缩放参数可能仅适用于某些图表:

?draw.triple.venn

揭示:

缩放: "布尔值,指示是否根据设置的大小在某些欧拉图中缩放圆的大小"

?venn.diagram

#Argument Venn Sizes    Class    Description
#scaled    2, 3         logical  Enable scaling for two-set and certain three-set Euler diagrams.

我的代码的玩具示例:

require(VennDiagram)

venn.plot <- draw.triple.venn(
    area1 = 70,
    area2 = 250,
    area3 = 500,
    n12 = 30,
    n23 = 60,
    n13 = 10,
    n123 = 5,
    category = c("C1", "C2", "C3"),
    fill = c("blue", "red", "green"),
    scaled=TRUE)

tiff(filename = "test.tiff", compression = "none",type = "quartz",antialias = "none")
grid.draw(venn.plot)
dev.off()

同样,使用“venn.diagram”函数的这段代码不会产生所需的缩放:

venn.diagram(x=list(A=c(1:15,16:20), B=c(6:15,21:30,100:150), C=c(11:30,200:300)),
         filename="test.tiff",
         fill = c("blue", "yellow", "red"), scaled=TRUE)

非常感谢

吉姆

【问题讨论】:

    标签: r venn-diagram


    【解决方案1】:

    所以回答我自己的问题: 对于某些配置,在数学上不可能创建一个 使用圆圈缩放 3 向维恩。

    【讨论】:

    • 在 Biostars 上有一个类似的帖子说这是不可能的。有了省略号,这是可能的。你找到使用 R 绘制它的方法了吗?
    【解决方案2】:

    三组维恩图的一般缩放因数据的潜在误导性视觉表示而被禁用

    请尝试使用以下两个工具,

    http://bioinformatics.psb.ugent.be/webtools/Venn/ http://bioinfogp.cnb.csic.es/tools/venny/index.html

    对于您的问题,请阅读以下注意事项:

    关键是在draw.triple.venn中设置overrideTriple

    如果 euler.d == TRUE,则为 19 种特殊情况绘制欧拉图。某些欧拉图在适当的情况下使用特定于两组维恩图的缩放、sep.dist 或偏移参数。该函数默认将三个圆圈以三角形排列,顶部两组,下面一组。圆圈以顺时针方向对应于 area1、area2 和 area3,area1 在左上角。 注意由于数据的潜在误导性视觉表示,三组维恩图的一般缩放被禁用。要重新启用,请将任何值分配给变量 overrideTriple

    http://cran.r-project.org/web/packages/VennDiagram/VennDiagram.pdf

    【讨论】:

    • 我试过设置这个变量,但它不起作用。我运行了原始问题中的示例,使用和不使用 overrideTriple(我将其设置为 TRUE)并且输出是相同的。
    • 诀窍是如何设置 'overrideTriple=T' 变量......即在 'draw.triple.venn' 调用之前 - 请参阅@atongsa 的回答。顺便说一句,这似乎也适用于 {VennDiagram} 包中更通用的“venn.diagram”调用。
    • 嗯??不缩放圆圈似乎更具误导性。无论如何,谢谢你的提示。
    【解决方案3】:

    我的解决方案:

    overrideTriple=T
    draw.triple.venn(9, 20, 30, 2, 10, 3, 2, category =
                   rep("", 3), rotation = 1, reverse = FALSE, euler.d = F, scaled = F)
    

    【讨论】:

    • 这为我解决了!诀窍是如何设置“overrideTriple=T”变量……即在“draw.triple.venn”调用之前。顺便说一句,这似乎也适用于 {VennDiagram} 包中更通用的“venn.diagram”调用。
    【解决方案4】:

    我改用Vennerable。将数据读入维恩对象有点复杂,但它会生成加权/缩放的三组图表 + 图形选项。

    【讨论】:

      【解决方案5】:

      如果您考虑采用不同的方法,我们开发了具有其他形状的 nVennR 包来传达区域大小。

      mySVG <- plotVenn(list(A=c(1:15,16:20)), list(B=c(6:15,21:30,100:150)), list(C=c(11:30,200:300)))
      

      Quasi-proportional Venn diagram

      这个R包是初步的,输出控制的选项非常有限。我们正在根据收到的反馈开发一个新版本。还有一个Web version 有更多选项,并且输出总是可以用 Inkscape 等外部工具进行编辑。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-04
        • 1970-01-01
        • 1970-01-01
        • 2015-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多