2

我使用代码绘制了下面的维恩图。

# Venn Diagram
grid.newpage();
venn.plot4 <- draw.quad.venn(
    area1 = 849, area2 = 7181, area3 = 1776, area4 = 6254,
    n12 = 0, n13 = 849, n14 = 0, n23 = 927, n24 = 6254, n34 = 0,
    n123 = 0, n124 = 0, n134 = 0, n234 = 0,
    n1234 = 0,
    category = c("A", "B", "C", "D"),
    fill = c("orange", "red", "green", "blue"),
    lty = "dashed",
    cex = 2,
    cat.cex = 2,
    cat.col = c("orange", "red", "green", "blue")
    );
grid.draw(venn.plot4);

文图

有许多不重叠的区域(0)。您能否建议根据重叠区域调整几何形状的方法?

编辑 在考虑了@zx8754 的建议后,我尝试使用该venneuler包进行绘图。它看起来比以前的情节更好。但是,重叠区域 A 和 C 并没有反映实际值(A 应该完全是 C 的一部分)。我什至看不到在情节上绘制数字的选项。欢迎任何建议。

# including the null values 
vd <- venneuler(c(A=849, B=7181, C=1776, D=6254, 
                  "A&B"=0, "A&C"=849, "A&D"=0, "B&C"=927, "B&D"=6254, "C&D"=0))
plot(vd)

文图

我也试过d3vennR用下面的代码打包

venn_tooltip(
    d3vennR(
        data = list(
            list(sets= list('A'), size= 849),
            list(sets= list('B'), size= 7181),
            list(sets= list('C'), size= 1776),
            list(sets= list('D'), size= 6254),
            list(sets= list('A','B'), size= 0),
            list(sets= list('A','C'), size= 849),
            list(sets= list('A','D'), size= 0),
            list(sets= list('B','C'), size= 927),
            list(sets= list('B','D'), size= 6254),
            list(sets= list('C','D'), size= 0)
        )
        ,layoutFunction = '
function(d) { return venn.venn(d, { initialLayout: venn.classicMDSLayout });}
  '
    ))

B尽管和区域之间存在重叠C,但我们可以看到输出没有重叠。请告知如何纠正这个问题?

4

2 回答 2

1

您没有提供venneuler它期望的那种输入。它需要不相交的组合,但您已经为它提供了联合。A,例如,在您的示例中应该设置为 0。

但是,我的包euler可以同时接受输入和绘图计数,尽管我不确定欧拉图是否适合您的图,正如您从下面的输出中发现的那样。

library(eulerr)

vd <- euler(c(A = 849, B = 7181, C = 1776, D = 6254, 
              "A&B" = 0, "A&C" = 849, "A&D" = 0, "B&C" = 927, "B&D" = 6254,
              "C&D" = 0),
            input = "union")

plot(vd, counts = TRUE)

在此处输入图像描述

于 2017-03-10T17:33:24.170 回答
0

这看起来很适合我的包nVennR。这是您的数据的示例,尽管有更方便的方法来输入数据:

library(nVennR)
myV <- createVennObj(nSets = 4, sNames = c('A', 'B', 'C', 'D'))
myV <- setVennRegion(myV, c('A', 'C'), 849)
myV <- setVennRegion(myV, c('B', 'C'), 927)
myV <- setVennRegion(myV, c('B', 'D'), 6254)
myPlot <- plotVenn(nVennObj = myV, setColors=c("orange", "red", "green", "blue"), opacity=0.2)

结果:

欧拉图

于 2019-02-07T18:57:30.560 回答