Skip to main content

Crate eunoia

Crate eunoia 

Source
Expand description

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

A fit has two stages:

  1. Multi-dimensional scaling places fixed-size shapes.
  2. Numerical optimization refines the shapes against the chosen loss.

§Example

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

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");

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.
plotting
Polygon-based plotting utilities.
spec
Diagram specification and construction.
venn
Canonical Venn-diagram layouts.