A Clojure(Script) library for building interactive visualization apps with Vega-Lite/Vega using data-driven templates.
Hanami is a Clojure and ClojureScript library for building interactive visualization applications using Vega-Lite and Vega. It replaces traditional API-based chart generation with a data-driven template system, allowing developers to define visualizations as parameterized maps that transform recursively into full specifications. It solves the problem of creating complex, interactive charts with a declarative, functional approach.
Clojure and ClojureScript developers building data visualization dashboards, interactive analytics tools, or scientific visualization applications. It's especially suited for teams wanting a purely data-driven, composable alternative to object-oriented charting libraries.
Developers choose Hanami for its declarative, data-oriented template system that avoids API lock-in, enables easy composition and reuse, and integrates seamlessly with the Clojure ecosystem (Reagent/Re-Com). It provides a flexible foundation for both simple charts and complex interactive applications.
Interactive arts and charts plotting with Clojure(Script) and Vega-lite / Vega. Flower viewing 花見 (hanami)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses recursive transformations of parameterized maps to generate Vega/Vega-Lite specs, enabling flexible composition without object-oriented APIs, as highlighted in the README's comparison to Altair.
Supports building full interactive apps with tabs, sessions, and real-time data streaming via a lightweight WebSocket messaging system, demonstrated in the examples for instrumented charts and data streaming.
Seamlessly integrates with Reagent and Re-Com for UI components, allowing custom instrumentation and picture frames around visualizations, as shown in the instrumented barchart example with sliders and input fields.
Templates can be composed, merged, and extended to create domain-specific libraries, promoting code reuse and abstraction, exemplified by the trend-chart template construction with local defaults.
Requires configuring Clojure/ClojureScript projects with Reagent, Re-Com, and WebSockets, which can be daunting for developers new to the Clojure ecosystem or functional web development.
Heavily relies on Vega-Lite and Vega, which themselves have learning curves, and being Clojure-specific, it lacks the broad community support and resources of JavaScript or Python visualization tools.
The README is extensive but assumes familiarity with Clojure, Vega-Lite, and functional programming concepts, which might overwhelm beginners seeking quick starts or simple examples.
Hanami is an open-source alternative to the following products: