🌐
CRAN
cran.r-project.org › package=eulerr
CRAN: Package eulerr - R Project
3 weeks ago - An Euler diagram is a generalization of a Venn diagram, relaxing the criterion that all interactions need to be represented. Diagrams may be fit with ellipses and circles via a wide range of inputs and can be visualized ...
🌐
GitHub
github.com › jolars › eulerr
GitHub - jolars/eulerr: Area-Proportional Euler and Venn Diagrams with Ellipses · GitHub
eulerr generates area-proportional Euler diagrams that display set relationships (intersections, unions, and disjoints) with circles or ellipses.
Starred by 138 users
Forked by 19 users
Languages   R 74.4% | C++ 19.4% | TeX 3.6% | Nix 1.0% | C 0.8% | Makefile 0.6% | Shell 0.2%
🌐
RDocumentation
rdocumentation.org › packages › eulerr › versions › 7.0.4 › topics › euler
euler function - RDocumentation
Learn R Programming · eulerr (version 7.0.4) Fit Euler diagrams (a generalization of Venn diagrams) using numerical optimization to find exact or approximate solutions to a specification of set relationships. The shape of the diagram may be a circle or an ellipse.
🌐
CRAN
cran.r-project.org › web › packages › eulerr › vignettes › introduction.html
Introducing eulerr
September 23, 2025 - That is, depending on input, eulerr will sometimes produce Venn diagrams but sometimes not. R features several packages that produce Euler diagrams; some of the more prominent ones (on CRAN) are
🌐
Jolars
jolars.github.io › eulerr › reference › plot.euler.html
Plot Euler and Venn diagrams — plot.euler • eulerr
Defaults for these values, as well ... using eulerr_options(). If the diagram has been fit using the data.frame or matrix methods and using the by argument, the plot area will be split into panels for each combination of the one to two factors. For users who are looking to plot their diagram using another package, all the necessary parameters can be collected if the result of this function ...
🌐
RDocumentation
rdocumentation.org › packages › eulerr › versions › 7.0.2
eulerr package - RDocumentation
eulerr generates area-proportional Euler diagrams that display set relationships (intersections, unions, and disjoints) with circles or ellipses.
🌐
RDocumentation
rdocumentation.org › packages › eulerr › versions › 1.0.0 › topics › eulerr
eulerr Area-Proportional Euler Diagrams
Compute Euler diagrams (a generalization of Venn diagrams) using numerical optimization to find exact or approximate solutions to a specification of set relationships.
🌐
Anaconda.org
anaconda.org › conda-forge › r-eulerr
r-eulerr - conda-forge
View packages from the conda-forge channel on Anaconda.org.
🌐
Jolars
jolars.github.io › eulerr › reference › eulerr-package.html
eulerr: Area-Proportional Euler and Venn Diagrams with Ellipses — eulerr-package • eulerr
An Euler diagram is a generalization of a Venn diagram, relaxing the criterion that all interactions need to be represented. Diagrams may be fit with ellipses and circles via a wide range of inputs and can be visualized in numerous ways.
🌐
GitHub
github.com › jolars › eulerr › blob › main › R › plot.euler.R
eulerr/R/plot.euler.R at main · jolars/eulerr
Area-Proportional Euler and Venn Diagrams with Ellipses - jolars/eulerr
Author   jolars
Find elsewhere
🌐
CRAN
cran.r-project.org › web › packages › eulerr › readme › README.html
eulerr
eulerr generates area-proportional Euler diagrams that display set relationships (intersections, unions, and disjoints) with circles or ellipses.
🌐
CRAN
cran.r-project.org › web › packages › eulerr › eulerr.pdf pdf
Area-Proportional Euler and Venn Diagrams with Ellipses
Micallef L, Rodgers P. eulerAPE: Drawing Area-Proportional 3-Venn Diagrams Using Ellipses. PLOS ONE (Internet). 2014 Jul (cited 2016 Dec 10);9(7):e101717. Available from: doi:10.1371/ ... This function provides a means to set default parameters for functions in eulerr.
🌐
Rdrr.io
rdrr.io › cran › eulerr › src › R › euler.R
eulerr source: R/euler.R
#' \item{ellipses}{a matrix of `h` and `k` (x and y-coordinates for the #' centers of the shapes), semiaxes `a` and `b`, and rotation angle `phi`} #' \item{original.values}{set relationships in the input} #' \item{fitted.values}{set relationships in the solution} #' \item{residuals}{residuals} #' \item{regionError}{the difference in percentage points between each #' disjoint subset in the input and the respective area in the output} #' \item{diagError}{the largest `regionError`} #' \item{stress}{normalized residual sums of squares} #' #' @seealso [plot.euler()], [print.euler()], [eulerr_option
🌐
Rdrr.io
rdrr.io › cran › eulerr
eulerr: Area-Proportional Euler and Venn Diagrams with Ellipses version 7.0.2 from CRAN
May 29, 2024 - Generate area-proportional Euler diagrams using numerical optimization. An Euler diagram is a generalization of a Venn diagram, relaxing the criterion that all interactions need to be represented. Diagrams may be fit with ellipses and circles via a wide range of inputs and can be visualized ...
Top answer
1 of 3
5

Regarding how to fix the issue, it depends on the level of precission you want. From the nVenn algorithm, I authored the nVennR package to create quasi-proportional Euler diagrams. With the caveats mentioned in the link, you can represent larger numbers of sets and show the relative size of each region. In your example,

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)

And the result would be:

Depending on your requirements, this may not be satisfactory. The proportionality is in the area of the circles, not the regions (you can see that the region 1, 2, 3, 4 - A&B&C&D - has empty space. However, this strategy overcomes the limitations of regular shapes in these representations mentioned by Johan Larsson. If you are interested, there are more details in the vignette.

2 of 3
4

The reason why some areas are left out is simple: the diagram is inexact and is missing some areas. There is no place to put the label for B&C so that's why B and C are missing 2 units. There likely isn't any way (or at least eulerr cannot find it) to perfectly represent your combination with an Euler diagram using ellipses. You either have to accept that it is inexact or try another solution.

Similarly, the residual plot cannot show the missing residuals graphically because there is no area representing them. I am, by the way, the author of this package and I do have something better in mind for the residual plot which would display missing areas as well, but I haven't had time to implement it yet.

🌐
CRAN
cran.r-project.org › web › packages › eulerr › vignettes › visualization.html
Visualizing Euler diagrams with eulerr - CRAN - R Project
September 23, 2025 - set.seed(2) library(eulerr) con <- c(A = 1, B = 1, C = 1, D = 1, E = 1, F = 1, G = 1, H = 1, "A&B" = 0.2, "B&C" = 0.2, "C&D" = 0.2, "D&E" = 0.2, "E&F" = 0.2, "F&G" = 0.2, "G&H" = 0.2) plot(euler(con), labels = as.character(1:8)) The eight first colors of the default color palette · If there are disjoint clusters of ellipses, the optimizer will often spread these out more than is necessary, wasting space in our diagram. To tackle this, we use a SKYLINE-BL rectangle packing algorithm (Jylänki 2010) designed specifically for eulerr.
🌐
Jolars
jolars.github.io › eulerr
Area-Proportional Euler and Venn Diagrams with Ellipses • eulerr
eulerr generates area-proportional Euler diagrams that display set relationships (intersections, unions, and disjoints) with circles or ellipses.
🌐
RDocumentation
rdocumentation.org › packages › eulerr › versions › 3.0.1 › topics › plot.euler
plot.euler function - RDocumentation
# NOT RUN { fit <- euler(c("A" = 10, "B" = 5, "A&B" = 3)) plot(fit, labels = c("foo", "bar"), fill_alpha = 0.7) # Customize colors, remove borders, bump alpha, color labels white plot(fit, fill_alpha = 0.5, fill = c("red", "steelblue4"), col = "white", border = "transparent", fontface = "bold.italic") # Add quantities to the plot plot(fit, quantities = TRUE) # Add a custom legend and retain quantities plot(fit, quantities = TRUE, auto.key = list(space = "bottom", columns = 2)) # Plot without fills and distinguish sets with border types instead plot(fit, lty = c("solid", "dotted"), fill = "tran