【问题标题】:Euler diagram in RR中的欧拉图
【发布时间】:2021-02-24 15:35:28
【问题描述】:

大家好,我想绘制欧拉图,但我希望以不同的方式绘制如下图。我如何绘制这种类型的欧拉图有什么建议,是否可以像这样绘制

谢谢

  A  B  C  D   A1   B1   C1   D1
  2  3  5  6   2   30   30   60
  3  0  1  2   4   50   10   10
  4  0  6  5   85   4   85   50
  6  0  10 4   90  70   90    4
  5  92 50 10  50  50    3   30

【问题讨论】:

  • 好的,我会编辑我的问题
  • 一个问题是圆圈通常不足以表达超过 3 组的关系。对于 4 组,使用椭圆的配置是可能的,超过 4 的任何东西都需要真正奇怪的非凸形状。如果矩阵满足特殊条件(例如,没有数字出现在超过 3 个连续的列中),它可能有助于拼写出来了。
  • A 和 A1 之间不通用的值,想要从 A 中检查的值在 B、C、D 中,同样 A1 在 B1、C1、D1 中
  • 有一个绘制欧拉图的包:cran.r-project.org/web/packages/eulerr/eulerr.pdf。也许这会有所帮助。仅使用绘图图元就可以完成您想做的事情。

标签: r ggplot2 venn-diagram


【解决方案1】:

正如 cmets 中所解释的,您将无法用圆表示超过 3 个集合的任意关系集合。 eulerr 包使用省略号来获得更多组合,并使结果与每个区域中的元素数量成比例。我制作了一个名为nVennR 的不同包,它使用圆圈作为区域而不是集合。然后将集合围绕这些圆圈绘制:

> library(nVennR)
> myT <- read.table('clipboard', header = T)
> lol <- as.list(myT)
> myV <- plotVenn(lol)
> myV <- plotVenn(nVennObj = myV)
> myV <- plotVenn(nVennObj = myV)
> myV <- plotVenn(nVennObj = myV)
> myV <- plotVenn(nVennObj = myV)
> myV <- plotVenn(nVennObj = myV)
> myV <- showSVG(nVennObj = myV, opacity = 0.2)

重复命令myV &lt;- plotVenn(nVennObj = myV) 是获得紧凑形状所必需的。如果你尝试一下,你会发现它需要几分钟,因为它需要执行几次模拟。包装可以带任意数量的套,但超过 9 套时事情变得非常缓慢。结果:

您可以保存、编辑和改进图片以更好地显示信息,但这并非易事。您可以在vignette找到更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 2018-10-21
    相关资源
    最近更新 更多