Introduction
Eunoia is a Rust library for area-proportional Euler and Venn diagrams. It is
the engine behind the @jolars/eunoia npm package,
the eunoia Python package, and the Eunoia.jl Julia package, as well as a
modern rewrite of the C++ backend behind the eulerr R package.
Who this is for
These docs are aimed at two audiences:
- End users of language wrappers (R, Python, JavaScript, Julia) who want to understand what the underlying library does, what its knobs mean, and how to read its outputs.
- Binding authors wiring up downstream packages. Most hosts bind the Rust core directly (wasm-bindgen, PyO3, extendr); native hosts that reach it through the C ABI have the Bindings section.
For Rust API reference see docs.rs/eunoia;
for the TypeScript surface see the type definitions shipped with @jolars/eunoia.
This site is the narrative companion.
Where to start
- Getting started: the quickstart sections for JavaScript, Rust, Python, R, or Julia.
- Writing a native binding via the C ABI: C ABI contract.
- Placing labels in a downstream renderer: Label placement (the only fully written chapter so far; the rest are stubs that will fill in as consumers hit the gap).