Search code examples
rggplot2plotvenn-diagrameulerr

Area proportional 3-way Venn Diagram in R


I read quite a few threads on creating Venn Diagram in R. Is it possible to create a proportional triple Venn Diagram talks about using eulerr package. Venn diagram proportional and color shading with semi-transparency is very comprehensive and did help me with a lot of the other graphs I needed.

While above threads are fantastic, I believe that there is one problem that is still not solved by above threads. It happens when the intersection of three sets represents a huge portion of overall area. In my case, R&S&W is 92% of total area. Hence, the graph is imperceptible and ugly. Is there any way we can fix this?

Here's my data and code:

dput(Venn_data)
structure(c(94905288780.4383, 3910207511.54001, 2615620176.44757, 
1125606833.85568, 187542691.618916, 104457994.331746, 96049675.0823557
), .Names = c("R&S&W", "R&S", "S&W", "S", "R", "W", "R&W"))

VennDiag2 <- eulerr::euler(Venn_data,shape="ellipse")
windows()
plot(VennDiag2)

Here's the output:

Venn Diagram

I cannot see what's R&S, S&W, R, S, W etc.

I also tried venneuler package.

Here's my code:

windows()
 v<-venneuler(Venn_data)
 plot(v)

Unfortunately, this didn't help either. Here's the output.

enter image description here

Is there any way we can fix this? I am not an expert so I thought of asking here. I'd sincerely appreciate any help. I have spent quite a few hours on this and am still not able to get this to work.


Solution

  • You could always retrieve the plot parameters yourself and position the labels using arrows or something, but another option would be to use a legend instead of labels.

    plot(VennDiag2, legend = TRUE)
    

    enter image description here

    Is is somewhat questionable whether there is much use for an Euler diagram at all here though.