Eunoia: Area-Proportional Euler and Venn Diagrams in Rust, Julia, Python, R, and JavaScript

Data visualization
Euler diagrams
Venn diagrams
Software

Eunoia fits area-proportional Euler diagrams and constructs Venn diagrams using a shared Rust implementation with Julia, Python, R, and JavaScript bindings.

Authors

Johan Larsson

Nicole M. Lee

Published

1 November 2026

Details

arXiv, arXiv:2611.02198

Links
Abstract

Area-proportional diagrams show set sizes through the areas of their regions, but many combinations of intersections cannot be represented exactly by simple shapes. We present Eunoia, a Rust library that fits Euler diagrams and builds canonical Venn diagrams with four shape families: circles, ellipses, squares, and rectangles. It calculates region areas analytically, combines several initialization and optimization strategies, and reports diagnostics to assess the resulting fit. Plotting tools handle region polygons, labels, unit glyphs, and member names. Packages for Julia, Python, R, and JavaScript share the Rust implementation, as do a C interface and a web application that runs locally in the browser using WebAssembly.

 

Citation

BibTeX citation:
@misc{larsson2026,
  author = {Larsson, Johan and Lee, Nicole M.},
  publisher = {arXiv},
  title = {Eunoia: {Area-Proportional} {Euler} and {Venn} {Diagrams} in
    {Rust,} {Julia,} {Python,} {R,} and {JavaScript}},
  number = {arXiv:2611.02198},
  date = {2026-11-01},
  url = {https://arxiv.org/abs/2611.02198},
  doi = {10.48550/arXiv.2611.02198},
  langid = {en},
  abstract = {Area-proportional diagrams show set sizes through the
    areas of their regions, but many combinations of intersections
    cannot be represented exactly by simple shapes. We present Eunoia, a
    Rust library that fits Euler diagrams and builds canonical Venn
    diagrams with four shape families: circles, ellipses, squares, and
    rectangles. It calculates region areas analytically, combines
    several initialization and optimization strategies, and reports
    diagnostics to assess the resulting fit. Plotting tools handle
    region polygons, labels, unit glyphs, and member names. Packages for
    Julia, Python, R, and JavaScript share the Rust implementation, as
    do a C interface and a web application that runs locally in the
    browser using WebAssembly.}
}
For attribution, please cite this work as:
Larsson, Johan, and Nicole M. Lee. 2026. “Eunoia: Area-Proportional Euler and Venn Diagrams in Rust, Julia, Python, R, and JavaScript.” arXiv:2611.02198. Preprint, arXiv, November 1. https://doi.org/10.48550/arXiv.2611.02198.