R eulerr程序包-显示错误的欧拉图

时间:2019-01-12 19:28:58

标签: r venn-diagram

我正在尝试使用R包eulerr创建一个Euler图。 我正在使用以下代码:

vd <- euler(c(A = 54, B = 22, C = 53, D= 26 ,"A&B" = 20, "A&C" = 29, "A&D"=10, "B&C" = 16, "B&D"=5, "C&D"=7,"A&B&C" = 14, "A&B&D"=5, "A&C&D"=4, "B&C&D"=3,"A&B&C&D"=3),input = c("union"), shape="ellipse")

plot(vd, labels = c("A", "B", "C","D"), main = "Databases",Count=TRUE, quantities = TRUE)

我得到以下结果: enter image description here 但是,由此产生的欧拉图是错误的:

  • 并非所有B都应包含在A
  • B的总数应该为22(在图片中,它总共显示为20)
  • C总数应为53(而不是51)

如何解决此问题,或者这是一个包装错误?

error_plot显示以下内容: 区域错误: Region error 残留物:

Residuals 不幸的是,残差图没有显示残差。 不过,缺失的情况显示在下面的“正常”残差统计中。

        original fitted residuals regionError
A             15     15         0       0.004
B              0      0         0       0.000
C             19     19         0       0.005
D             13     13         0       0.003
A&B            4      4         0       0.001
A&C           14     14         0       0.003
A&D            4      4         0       0.001
B&C            2      0         2       0.022
B&D            0      0         0       0.000
C&D            3      3         0       0.001
A&B&C         11     11         0       0.003
A&B&D          2      2         0       0.000
A&C&D          1      1         0       0.000
B&C&D          0      0         0       0.000
A&B&C&D        3      3         0       0.001

diagError: 0.022 
stress:    0.004 

3 个答案:

答案 0 :(得分:2)

关于如何解决此问题,取决于您要执行的操作的级别。根据{{​​3}}算法,我编写了nVennR程序包来创建准比例Euler图。使用链接中提到的警告,您可以表示更多的集合并显示每个区域的相对大小。在您的示例中,

library(nVennR)
myV <- createVennObj(nSets = 4, sNames = c('A', 'B', 'C', 'D'), sSizes = c(0, 26, 53, 7, 22, 5, 16, 3, 54, 10, 29, 4, 20, 5, 14, 3))
myV <- plotVenn(nVennObj = myV)

结果将是: nVenn

根据您的要求,这可能并不令人满意。比例是在圆的区域中,而不是区域中(您可以看到区域1,2,3,4-A&B&C&D-具有空白空间。但是,此策略克服了Johan提到的这些表示形式中常规形状的局限性拉尔森。如果您有兴趣,请访问Euler diagram

答案 1 :(得分:1)

某些区域被忽略的原因很简单:该图不精确,并且缺少某些区域。没有位置放置B&C的标签,因此B和C缺少2个单位。不可能没有任何方法(或至少 eulerr 无法找到它)用椭圆形的欧拉图完美地表示您的组合。您必须接受它不精确或尝试其他解决方案。

类似地,残差图无法以图形方式显示丢失的残差,因为没有面积表示它们。顺便说一下,我是该软件包的作者,对于残差图,我确实有一些更好的想法,该残差图也将显示缺失的区域,但是我还没有时间实现它。

答案 2 :(得分:0)

Euler在许多情况下都可能出错,例如:

vd <- euler(c(A=23578,B=30492,C=63610,"A&B"=563,"A&C"=624,"B&C"=1600,"A&B&C"=308))
plot(vd, labels = c("1", "2", "3"), main = "overlap", cex=2)

显示三个类别没有重叠区域的图。

我认为这只是使用不正确的工具。