Spaces:
Running
Running
File size: 14,836 Bytes
06e4298 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 | # 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 `<g>` (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.
|