Learn R Programming

eulerr

eulerr generates area-proportional Euler diagrams that display set relationships (intersections, unions, and disjoints) with circles or ellipses. Euler diagrams are Venn diagrams without the requirement that all set interactions be present (whether they are empty or not), which means that, depending on input, eulerr sometimes produces Venn diagrams and sometimes not.

With three or more sets intersecting, exact Euler diagrams are often impossible. For such cases eulerr attempts to provide a good approximation by numerically tuning the parameters of the ellipses or circles to minimize the error in the resulting diagram. Residuals and goodness of fit statistics are provided to assess whether the resulting diagram can be trusted.

Installation

CRAN version

install.packages("eulerr")

Development version

devtools::install_github("jolars/eulerr")

Shiny app

eulerr is also available as a shiny app hosted at eulerr.co.

Usage

library(eulerr)
# From Wilkinson 2012
fit <- euler(
  c(
    "A" = 4,
    "B" = 6,
    "C" = 3,
    "D" = 2,
    "E" = 7,
    "F" = 3,
    "A&B" = 2,
    "A&F" = 2,
    "B&C" = 2,
    "B&D" = 1,
    "B&F" = 2,
    "C&D" = 1,
    "D&E" = 1,
    "E&F" = 1,
    "A&B&F" = 1,
    "B&C&D" = 1
  ),
  shape = "ellipse"
)

We can inspect the goodness-of-fit metrics diagError and stress for the solution,

fit$stress
#> [1] 5.056831e-11
fit$diagError
#> [1] 1.019054e-06

and plot it

plot(fit)

Please see the introductory vignette for a brief introduction or eulerr under the hood for details.

License

eulerr is open source software, licensed under GPL-3.

Versioning

eulerr uses semantic versioning.

Code of conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Acknowledgements

eulerr would not be possible without Ben Frederickson’s work on venn.js or Leland Wilkinson’s venneuler.

Copy Link

Version

Install

install.packages('eulerr')

Monthly Downloads

13,509

Version

7.0.4

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Johan Larsson

Last Published

September 24th, 2025

Functions in eulerr (7.0.4)

plot.euler

Plot Euler and Venn diagrams
plot.eulergram

Print (plot) Euler diagram
organisms

Organisms
tally_combinations

Tally set relationships
normalize_pars

Normalize parameters (semiaxes and rotation)
print.venn

Print a summary of a Venn diagram
print.euler

Print a summary of an Euler diagram
setup_gpar

Setup gpars
venn

Venn diagrams
regionError

regionError
poly_clip

Polygon Clipping
rescale

Rescale values to new range
skyline_pack

Skyline packing algorithm
update_list

Update list with input
setup_tag

Setup grobs for labels (labels, quantities, percentages)
is_false

Check if object is strictly FALSE
bit_indexr

Binary indices
get_constraints

Set up constraints for optimization
center_layout

Center ellipses
coef.euler

Return ellipses from the euler object
euler

Area-proportional Euler diagrams
is_real

Check if vector is a real (numeric non-integer)
is_integer

Check if a vector is an integer
compress_layout

Compress an Euler layout
n_sets

Get the number of sets in he input
ellipse

Plotting coordinates for an ellipse
normalize_angle

Normalize an angle to [-pi, pi)
makeContent.EulerTags

Avoid overlap for labels
separate_two_discs

Optimize Distance Between Circles Based On Overlap
diagError

diagError
replace_list

Replace (refresh) a list
mix_colors

Blend (average) colors
eulerr_deprecated

Deprecated functions in package eulerr.
eulerr-package

eulerr: Area-Proportional Euler and Venn Diagrams with Ellipses
fruits

Fruits
eulerr_default_options

Default options for eulerr
error_plot

Error plot for euler objects
plants

Plants
eulerr_options

Get or set global graphical parameters for eulerr
pain

Pain distribution data
fitted.euler

Fitted values of euler object
dummy_code

Dummy code a data.frame
get_bounding_box

Get the bounding box of an ellipse
setup_geometry

Compute geometries and label locations
setup_grobs

Grobify Euler objects
stress

Stress