# Whole of Mathematics — Interactive Zoomable Chart Design ## Vision A single, high-level interactive visualization that shows the **entire landscape of mathematics** as our collection understands it—with the ability to **zoom in** from broad domains down to individual processes, and to **click through** to the actual flowchart or dependency graph for any process. Think of it as a "map of mathematics" that is: - **Data-driven** — built from `metadata.json` and our hierarchy - **Zoomable** — pan and zoom like a geographic map or Prezi - **Drillable** — click a region to focus on it and see its children - **Linked** — deepest level opens the existing process HTML page --- ## Domain Grouping: arXiv Math Taxonomy Use the **arXiv Mathematics** taxonomy (math.XX) as the canonical domain structure. arXiv is widely recognized, stable, and aligns with how mathematicians categorize research. ### arXiv Math Categories (math.XX) | Code | Name | |------|------| | math.AC | Commutative Algebra | | math.AG | Algebraic Geometry | | math.AP | Analysis of PDEs | | math.AT | Algebraic Topology | | math.CA | Classical Analysis and ODEs | | math.CO | Combinatorics | | math.CT | Category Theory | | math.CV | Complex Variables | | math.DG | Differential Geometry | | math.DS | Dynamical Systems | | math.FA | Functional Analysis | | math.GM | General Mathematics | | math.GN | General Topology | | math.GR | Group Theory | | math.GT | Geometric Topology | | math.HO | History and Overview | | math.IT | Information Theory | | math.KT | K-Theory and Homology | | math.LO | Logic | | math.MG | Metric Geometry | | math.MP | Mathematical Physics | | math.NA | Numerical Analysis | | math.NT | Number Theory | | math.OA | Operator Algebras | | math.OC | Optimization and Control | | math.PR | Probability | | math.QA | Quantum Algebra | | math.RA | Rings and Algebras | | math.RT | Representation Theory | | math.SG | Symplectic Geometry | | math.SP | Spectral Theory | | math.ST | Statistics Theory | ### Mapping Our Subcategories → arXiv | Our subcategory | arXiv code(s) | |-----------------|---------------| | abstract_algebra | math.GR, math.RA, math.AC | | linear_algebra | math.RA | | category_theory | math.CT | | calculus_analysis | math.CA, math.CV, math.DS | | geometry_topology | math.GN, math.GT, math.AT, math.DG, math.MG | | number_theory | math.NT | | discrete_mathematics | math.CO, math.LO | | foundations | math.LO | | bioinformatics | (applied; no direct math.XX; use math.GM or separate) | *Wikipedia* math portal uses a flatter structure (Algebra, Analysis, Geometry, etc.)—can serve as a secondary grouping if we want a simpler top level. --- ## Hierarchy: What We're Mapping ### Level 0 — Whole of Mathematics (root) The entire collection. One view. ### Level 1 — arXiv Math Domains (or grouped) Either use arXiv codes directly (math.NT, math.AG, …) or group into ~6–8 broader areas for a simpler top level: | Domain | arXiv codes | Our subcategories | |--------|-------------|-------------------| | **Algebra** | AC, AG, CT, GR, RA, RT, QA | abstract_algebra, linear_algebra, category_theory | | **Analysis** | AP, CA, CV, FA, NA, SP | calculus_analysis, complex_analysis | | **Geometry & Topology** | AT, DG, GN, GT, MG, SG | geometry_topology | | **Number Theory** | NT | number_theory | | **Discrete & Logic** | CO, LO | discrete_mathematics, foundations | | **Dynamical Systems** | DS | (part of calculus_analysis) | | **Probability & Statistics** | PR, ST | (future) | | **Applied / Other** | GM, MP, OC, IT | bioinformatics | ### Level 2 — Subcategories e.g., within **Analysis**: Real Analysis, Complex Analysis, Complex Dynamics, Symbolic Dynamics. ### Level 3 — Processes Individual charts. Click → open process page. --- ## Force-Directed Graph: Deep Dive ### Why It Aligns With Our Current Metaphor Our existing process charts are **node–link diagrams**: - **Axiomatic theories**: nodes = axioms, definitions, theorems; edges = "depends on" - **Algorithms**: nodes = steps; edges = control flow A force-directed graph is the same visual language at a higher level: **nodes and edges**. It extends the dependency-graph metaphor from *within* a process to *between* processes and domains. ### Force-Directed vs. Treemap: Core Difference | Aspect | Treemap | Force-Directed Graph | |--------|---------|----------------------| | **Structure** | Containment (parent *contains* children) | Links (nodes *connected* by edges) | | **Relationships** | Implicit (nesting) | Explicit (edges) | | **Hierarchy** | Strict tree; one parent per node | Can be tree, DAG, or general graph | | **Cross-links** | Hard to show (a node lives in one place) | Natural (Galois ↔ Field Theory ↔ Group Theory) | | **Layout** | Rectangles, area = weight | Organic; forces pull/push nodes | | **Zoom** | Zoom into a region (geometric) | Pan/zoom canvas; click node to focus | ### Force-Directed *Can* Be Hierarchical You can use a force-directed layout with **hierarchical constraints**: - **Parent–child links**: domain → subcategory → process (tree edges) - **Cross-links**: `namedCollections` overlap, or explicit "related to" (e.g., Galois Theory ↔ Field Theory) - **Collision / clustering**: Give nodes of the same domain a "gravity" toward each other so they cluster - **Level-based y-position**: Fix y by depth (root at top, processes at bottom) for a tree-like flow So you get: **hierarchy + relationships** in one view. ### Zoom and Pan Force-directed graphs support zoom and pan the same way as treemaps: - Wrap the graph in an SVG `` (group) - Apply `d3.zoom()` to the SVG; transform the group on zoom/pan events - **Geometric zoom**: scale + translate the whole canvas (simple) - **Semantic zoom** (optional): at different zoom levels, show different detail (e.g., zoomed out = domains only; zoomed in = subcategories; further in = processes) ### Ease of Use With Our Collection **Data we have:** - `subcategory` per process → gives hierarchy (domain → subcategory → process) - `processType` (algorithm vs axiomatic_theory) → can style nodes differently - Process IDs and names → node labels and links **Data we can add:** - `namedCollections` → cross-links: two processes in "fermat" get an edge - Optional `dependsOn` or `relatedTo` → explicit edges between processes **Graph structure:** ``` Nodes: [Mathematics (root)] + [~8 domains] + [~10 subcategories] + [~98 processes] Edges: Tree edges (parent→child) + optional cross-edges (namedCollections, relatedTo) ``` ~120 nodes, ~100+ edges is well within D3 force layout comfort zone. No performance concerns. ### Relationship to Other Types - **Treemap**: Force-directed shows *links*; treemap shows *containment*. Different metaphors. Treemap is "zoom into a region"; force-directed is "follow the edges." - **Sunburst**: Both can show hierarchy. Sunburst is radial containment; force-directed is node-link. Sunburst is more compact; force-directed shows relationships. - **Map metaphor**: Could use force-directed *for layout* (position nodes), then draw "regions" (Voronoi, convex hulls) around domain clusters—hybrid approach. --- ## Technical Approaches (Summary) ### Option A: D3 Zoomable Treemap - Containment metaphor; area = count; no explicit edges. - **Fit**: Pure hierarchy, no cross-links. ### Option B: D3 Sunburst - Radial containment; compact. - **Fit**: Hierarchy; explore later. ### Option C: Force-Directed Graph with Zoom ← **Primary choice** - Node–link; explicit edges; aligns with our dependency-graph metaphor. - **Fit**: Hierarchy + cross-links; zoom/pan; works with our collection. ### Option D: Map Metaphor - Geographic feel; Voronoi or custom. - **Fit**: Explore later. ### Option E: Hybrid - Treemap + graph overlay. - **Fit**: Explore later. --- ## Recommended: Force-Directed Graph (Option C) + Zoom + Breadcrumbs **Why**: Aligns with our existing node–link dependency metaphor. Shows both hierarchy (domain → subcategory → process) and cross-links (e.g., via `namedCollections`). Zoom and pan are standard (D3 zoom on SVG group). ~120 nodes is trivial for D3 force. Breadcrumbs solve "where am I?" when zoomed. **Data shape** (nodes + links for force-directed): ```json { "nodes": [ { "id": "root", "name": "Mathematics", "level": 0 }, { "id": "algebra", "name": "Algebra", "level": 1 }, { "id": "analysis", "name": "Analysis", "level": 1 }, { "id": "abstract_algebra", "name": "Abstract Algebra", "level": 2 }, { "id": "abstract_algebra-group-theory", "name": "Group Theory", "level": 3, "processId": "abstract_algebra-group-theory", "subcategory": "abstract_algebra", "url": "processes/abstract_algebra/abstract_algebra-group-theory.html" } ], "links": [ { "source": "root", "target": "algebra" }, { "source": "algebra", "target": "abstract_algebra" }, { "source": "abstract_algebra", "target": "abstract_algebra-group-theory" }, { "source": "abstract_algebra-field-theory", "target": "abstract_algebra-group-theory" } ] } ``` `level` drives hierarchy. `links` include tree edges (parent→child) and optional cross-edges (e.g., Field Theory → Group Theory). `processId` and `url` at leaves for linking. --- ## Metadata Extensions for the Chart ### 1. Domain Mapping (arXiv-Based) Add to `metadata.json`: ```json { "domainHierarchy": { "algebra": { "name": "Algebra", "arxiv": ["math.AC", "math.AG", "math.CT", "math.GR", "math.RA", "math.RT", "math.QA"], "subcategories": ["abstract_algebra", "linear_algebra", "category_theory"] }, "analysis": { "name": "Analysis", "arxiv": ["math.AP", "math.CA", "math.CV", "math.FA", "math.NA", "math.SP"], "subcategories": ["calculus_analysis", "complex_analysis"] }, "geometry_topology": { "name": "Geometry & Topology", "arxiv": ["math.AT", "math.DG", "math.GN", "math.GT", "math.MG", "math.SG"], "subcategories": ["geometry_topology"] }, "number_theory": { "name": "Number Theory", "arxiv": ["math.NT"], "subcategories": ["number_theory"] }, "discrete_logic": { "name": "Discrete & Logic", "arxiv": ["math.CO", "math.LO"], "subcategories": ["discrete_mathematics", "foundations"] }, "dynamical_systems": { "name": "Dynamical Systems", "arxiv": ["math.DS"], "subcategories": [] }, "applied": { "name": "Applied & Other", "arxiv": ["math.GM", "math.MP", "math.OC", "math.PR", "math.ST"], "subcategories": ["bioinformatics"] } }, "subcategoryToArxiv": { "abstract_algebra": "math.GR", "calculus_analysis": "math.CA", "geometry_topology": "math.GT" } } ``` ### 2. Optional: Process-Level "Domain" Override For processes that span domains (e.g., Category Theory), allow: ```json { "id": "...", "domain": "algebra", "subcategory": "category_theory" } ``` Default: derive domain from subcategory via `domainHierarchy`. --- ## Interaction Design ### Zoom & Pan - **Scroll** or **pinch**: zoom in/out - **Drag**: pan - **Double-click** a region: zoom to fit that region (focus) - **Breadcrumb click**: jump back to that level ### Click Behavior - **Level 1–2** (domain, subcategory): zoom in to show children - **Level 3** (process): open process page in new tab (or same tab with back) ### Visual Feedback - **Hover**: highlight region, show tooltip (name + count) - **Focus**: breadcrumb updates; optional sidebar with list of processes in current view - **Cross-links**: if we add graph overlay, dim non-adjacent regions when hovering a node with many connections --- ## Responsive & Accessibility - **Mobile**: Touch pan/zoom; larger hit targets for small regions; consider "list view" fallback when zoomed to a subcategory - **Keyboard**: Tab through regions, Enter to zoom/select - **Screen readers**: Breadcrumb + list of current level's items as text --- ## Implementation Phases ### Phase 1: Static Hierarchy + Force-Directed Graph - Add `domainHierarchy` (arXiv-based) to metadata - Build nodes + links from processes (domain → subcategory → process) - Single HTML page with D3 force-directed graph + zoom/pan - **Deliverable**: Working "Whole of Mathematics" graph with our current 98 processes ### Phase 2: Process Links - Leaf nodes (processes) link to process HTML (using existing URL pattern) - Breadcrumb navigation - **Deliverable**: Full drill-down from root to process page ### Phase 3: Polish - Tooltips, legend (colors = domains or arXiv codes) - Optional "list view" toggle for current level - **Deliverable**: Production-ready interactive chart ### Phase 4: Cross-Links (Optional) - Use `namedCollections` to draw edges between related processes - Or: "Related" panel when hovering a process - **Deliverable**: Relationship-aware exploration --- ## Growing With the Collection As we add: - **New subcategories** (complex_analysis, landmark_theorems, formal_verification, ai_mathematics): extend `domainHierarchy` and subcategory→arXiv mapping - **New processes**: they appear automatically (nodes + links derived from metadata) - **Named mathematicians** (`namedCollections`): cross-edges between processes in the same collection; or a *second* view—"By Mathematician"—same graph structure but nodes grouped by collection. Toggle: "By Topic" | "By Mathematician" - **New arXiv codes**: add to `domainHierarchy`; graph reflows The chart is **always generated from metadata**—no manual diagram maintenance. --- ## Alternative: "Map" Metaphor (Future Enhancement) For a more geographic feel: - **Continents** = domains (irregular shapes, not rectangles) - **Countries** = subcategories - **Cities** = processes (dots or small regions) - Layout: Voronoi tessellation or force-directed placement with "gravity" to keep siblings near each other - Could use **MapLibre** or **Leaflet** with a custom "projection" that maps our hierarchy to 2D—playful and memorable --- ## Summary | Aspect | Choice | |--------|--------| | **Visualization** | D3 force-directed graph (primary) | | **Domain taxonomy** | arXiv math.XX (math.AC, math.NT, etc.) | | **Data** | Nodes + links derived from metadata + `domainHierarchy` | | **Levels** | 3: Domain → Subcategory → Process | | **Edges** | Tree (parent→child) + optional cross-links (`namedCollections`) | | **Interaction** | Zoom, pan, click-to-focus, breadcrumbs | | **Leaf action** | Open process HTML page | | **Growth** | Add to metadata; chart updates automatically | | **Future** | Sunburst, map metaphor—explore later | The "Whole of Mathematics" chart becomes the **entry point** to the database—a node–link visual index that matches our dependency-graph metaphor and scales with the collection.