Skip to content

Commit 3d425a3

Browse files
committed
aog wip
1 parent e2368c9 commit 3d425a3

1 file changed

Lines changed: 28 additions & 42 deletions

File tree

src/data_visualization/aog_in_clojure_part1.clj

Lines changed: 28 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,34 @@
472472
;; - Understand how composition merges layers
473473
;; - Debug layer construction before rendering
474474

475+
;; ### 📖 Implementation Status
476+
;;
477+
;; This notebook implements a working prototype with:
478+
;;
479+
;; **Core features:**
480+
;; - ✅ Compositional operators (`=*`, `=+`) with threading-macro support
481+
;; - ✅ Plain Clojure data (maps, vectors - no dataset required)
482+
;; - ✅ Type-aware grouping (categorical aesthetics create groups)
483+
;; - ✅ Three rendering targets (`:geom`, `:vl`, `:plotly`) with feature parity
484+
;; - ✅ Malli schemas with validation and helpful error messages
485+
;;
486+
;; **Plot types & transforms:**
487+
;; - ✅ Scatter, line, histogram
488+
;; - ✅ Linear regression (with grouping support)
489+
;; - ✅ Faceting (row, column, and grid layouts)
490+
;; - ✅ Custom scale domains
491+
;;
492+
;; **Not yet implemented** (compared to `tableplot.v1.plotly`):
493+
;; - ⚠️ Bar, box, violin, density, smooth, heatmap, text, segment
494+
;; - ⚠️ Additional aesthetics: size, symbol/shape, fill, line-width
495+
;; - ⚠️ Transforms: kernel density, loess/spline smoothing, correlation
496+
;; - ⚠️ Coordinate systems: 3D, polar, geographic
497+
;; - ⚠️ Advanced layouts: subplots, secondary axes, insets
498+
;; - ⚠️ Interactivity: hover templates, click events, selections
499+
;;
500+
;; Missing features are deferred, not abandoned - the design should accommodate
501+
;; them without fundamental restructuring.
502+
475503
;; # Malli Schemas
476504
;;
477505
;; The following Malli schemas define the structure and valid values for plot specs,
@@ -889,48 +917,6 @@
889917
;; 2. Efficiency - compute summaries (20 histogram bars), not raw data (1M points)
890918
;;
891919
;; # Proposed Design
892-
;;
893-
;; ### 📖 API Overview
894-
;;
895-
;; The API consists of three parts:
896-
;;
897-
;; 1. **Constructors** - Build partial layer specifications
898-
;; 2. **Composition operators** - Merge layers (`*`) and overlay them (`+`)
899-
;; 3. **Renderer** - Single `plot` function that interprets layer specs
900-
;;
901-
;; **Current Implementation Status**:
902-
;;
903-
;; - ✅ Core composition (`*`, `+`, layer merging)
904-
;; - ✅ Threading-macro friendly API (`->` works naturally)
905-
;; - ✅ Minimal delegation (compute transforms, delegate rendering)
906-
;; - ✅ Type information from Tablecloth
907-
;; - ✅ Type-aware grouping (categorical color groups, continuous doesn't)
908-
;; - ✅ Explicit `:group` aesthetic for override control
909-
;; - ✅ Three rendering targets (:geom, :vl, :plotly - all with full feature parity)
910-
;; - ✅ Statistical transforms: linear regression, histograms (with grouping support)
911-
;; - ✅ Faceting (row, column, and grid faceting across all targets)
912-
;; - ✅ Custom scale domains
913-
;; - ✅ ggplot2-compatible theming
914-
;; - ✅ Plain Clojure data structures (maps, vectors - no dataset required)
915-
;; - ✅ Malli schemas for layer validation
916-
;; - ✅ Column existence validation with helpful error messages
917-
;;
918-
;; **What's Missing (compared to tableplot.v1.plotly)**:
919-
;;
920-
;; - ⚠️ Plot types: line, bar, box, violin, density, smooth, heatmap, text, segment
921-
;; - ⚠️ Additional aesthetics: size, symbol/shape, opacity, fill, line-width
922-
;; - ⚠️ Statistical transforms: density estimation, smooth (loess/spline), correlation
923-
;; - ⚠️ Coordinate systems: 3D, polar, geo
924-
;; - ⚠️ Advanced layouts: subplots, secondary axes, insets
925-
;; - ⚠️ Interactivity: hover templates, click events, selections
926-
;; - ⚠️ Handling missing data
927-
;;
928-
;; **Design Philosophy Differences**:
929-
;;
930-
;; This API prioritizes composability and algebraic clarity over feature completeness.
931-
;; The focus is on a minimal, well-understood core that can be extended incrementally.
932-
;; Missing features are deferred, not abandoned - they can be added as needed while
933-
;; maintaining the compositional design.
934920

935921
;; ### ⚙️ Helper Functions
936922

0 commit comments

Comments
 (0)