Skip to main content

Crate eunoia

Crate eunoia 

Source
Expand description

§Eunoia

A Rust library for creating area-proportional Euler and Venn diagrams.

Eunoia generates optimal layouts for set visualizations using various geometric shapes (circles, ellipses, rectangles, triangles). The library uses a two-phase optimization approach:

  1. Initial layout: Multi-dimensional scaling (MDS) to place fixed-size shapes
  2. Refinement: Comprehensive optimization to minimize loss functions (RegionError or stress)

§Example

use eunoia::{DiagramSpecBuilder, Fitter, InputType};
use eunoia::geometry::shapes::Circle;

// Build specification (shape-agnostic)
let spec = DiagramSpecBuilder::new()
    .set("A", 5.0)
    .set("B", 2.0)
    .intersection(&["A", "B"], 1.0)
    .input_type(InputType::Exclusive)
    .build()
    .expect("Failed to build diagram specification");

// Choose shape type when fitting
let layout = Fitter::<Circle>::new(&spec).fit().unwrap();

Re-exports§

pub use error::DiagramError;
pub use fitter::Fitter;
pub use fitter::InitialSampler;
pub use fitter::Layout;
pub use fitter::MdsSolver;
pub use fitter::Optimizer;
pub use spec::Combination;
pub use spec::DiagramSpecBuilder;
pub use spec::InputType;
pub use venn::VennDiagram;

Modules§

constants
Mathematical and numerical constants used throughout the library.
error
Error types for diagram operations.
fitter
Fitter for creating diagram layouts from specifications.
geometry
Geometric primitives and operations.
loss
Loss function implementations for diagram fitting.
math
plotting
Polygon-based plotting utilities.
spec
Diagram specification and construction.
venn
Canonical Venn-diagram layouts.