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:
- Initial layout: Multi-dimensional scaling (MDS) to place fixed-size shapes
- 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.