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).
Documentation for Eunoia v1.7.0