Crystallis: Coordinated Multi-View Visualisation Generation with Large Language Models
Teaser: LLMs can generate individual charts, but multi-view dashboards require colour consistency, shared scales, and narrative coherence across views. Crystallis solves this with progressive nucleation (fix encodings from the first view) and semantic annealing (iteratively align all subsequent views). This article explores the architecture, the 94% colour consistency result, and what it means for automated visual analytics.
Introduction
Large language models have become surprisingly capable at generating individual charts from natural language. Tools like GPT-4o, Claude, and Gemini can produce a single bar chart, scatter plot, or line graph with reasonable accuracy. But ask them to generate a coordinated multi-view visualisation — a dashboard of multiple charts that share colour encodings, axis scales, and data provenance — and the results quickly deteriorate.
Each chart is generated independently, leading to inconsistent colour mappings, mismatched axis ranges, and disconnected narrative flow. The individual charts may look fine in isolation but fail as a coherent analytical presentation.
Crystallis, a framework introduced in a July 2026 paper from the Technical University of Munich, addresses this with two key innovations: progressive nucleation and semantic annealing. The system first identifies the core analytical dimensions of a dataset, then iteratively grows a coordinated visualisation specification that maintains consistency across all views.
This article explores the Crystallis architecture, the techniques that make cross-view coordination work, and what it means for the future of AI-generated visual analytics.
The Challenge: Multi-View Coordination
A coordinated multi-view visualisation (CMV) comprises multiple charts that share a common analytical purpose. Consider a sales dashboard with four views:
- A bar chart of revenue by region
- A line chart of monthly revenue trends
- A scatter plot of margin vs. order volume by product
- A geographic map of store locations
For these to work as a dashboard, they must share:
- Colour encodings — "Region EMEA" is the same colour in all charts
- Data filters — All views reflect the same time range
- Axis scales — Trends are comparable across line and bar views
- Narrative focus — The views collectively tell one story
LLMs operating chart-by-chart fail on every dimension of coordination because each chart is generated in isolation without awareness of the others.
Crystallis Architecture
Crystallis replaces the "generate charts independently" approach with a specification-first architecture:
┌────────────────────────────────────────────────────────┐
│ Natural Language Prompt │
│ "Create a sales dashboard showing revenue by region, │
│ monthly trends, and product margin analysis" │
└────────────────────────┬───────────────────────────────┘
│
┌────────────────────────▼───────────────────────────────┐
│ 1. Schema Discovery │
│ • Identify dataset dimensions and measures │
│ • Determine cardinalities and data types │
│ • Detect temporal and geospatial axes │
└────────────────────────┬───────────────────────────────┘
│
┌────────────────────────▼───────────────────────────────┐
│ 2. Progressive Nucleation │
│ • Select primary analytical dimension (nucleus) │
│ • Build unified colour/scale palette │
│ • Determine view topology (arrangement) │
└────────────────────────┬───────────────────────────────┘
│
┌────────────────────────▼───────────────────────────────┐
│ 3. View Generation (Semantic Annealing) │
│ • Generate each view from the shared specification │
│ • Anneal — enforce cross-view consistency │
│ • Validate encodings against the global palette │
└────────────────────────┬───────────────────────────────┘
│
┌────────────────────────▼───────────────────────────────┐
│ 4. Layout & Coordination │
│ • Arrange views in a coherent grid/layout │
│ • Add cross-view interactions (brush, hover) │
│ • Generate narrative annotations │
└────────────────────────┬───────────────────────────────┘
│
┌────────────────────────▼───────────────────────────────┐
│ Vega-Lite Specification (JSON) │
│ or HTML/CSS/JS Dashboard │
└────────────────────────────────────────────────────────┘
Progressive Nucleation
The key insight of progressive nucleation is that coordination must start from a single seed — the nuclear view — and grow outward. Crystallis identifies the highest-cardinality categorical dimension in the dataset as the nucleus:
Dataset: E-commerce transactions
Dimensions: [Region, Product, Month, StoreType]
Measures: [Revenue, Quantity, Margin]
Nucleus selection:
Region (4 values) ← highest cardinality categorical
↓
Palette assigned:
EMEA → #4C78A8
APAC → #F58518
AMER → #54A24B
LATAM → #E45756
Once the nuclear dimension and its colour palette are fixed, all subsequent views inherit these encodings. A bar chart of revenue by region uses the same colours as a line chart of revenue over time broken down by region.
Semantic Annealing
Where progressive nucleation defines the starting constraints, semantic annealing is the iterative refinement process that ensures every generated view respects them. The term draws an analogy to physical annealing — starting "hot" (permissive) and cooling into a well-ordered structure.
The annealing process follows a cooling schedule:
graph TD
subgraph Phase1[HOT — Temperature 1.0]
A1[Generate View 1] --> A2[Generate View 2]
A2 --> A3[Generate View N]
end
subgraph Phase2[ANNEAL — Temperature 0.5]
B1[Check colour palette] --> B2[Check axis scales]
B2 --> B3[Check sort orders]
B3 --> B4[Check font sizes]
B4 --> B5{Consistent?}
B5 -->|No| B6[Apply corrections]
B6 --> B1
B5 -->|Yes| C1
end
subgraph Phase3[FROZEN — Temperature 0.0]
C1[Lock specifications]
C1 --> C2[Generate layout]
C2 --> C3[Add cross-view interactions]
C3 --> C4[Export Vega-Lite]
end
A3 --> B1
C1 --> D[Final coordinated dashboard]
classDef hot fill:#E45756,stroke:#b33d3d,color:#fff
classDef anneal fill:#F58518,stroke:#b35a0e,color:#fff
classDef frozen fill:#4C78A8,stroke:#2c4e6e,color:#fff
class A1,A2,A3 hot
class B1,B2,B3,B4,B5,B6 anneal
class C1,C2,C3,C4 frozen
The process works in three phases:
Phase 1 — Hot Generation (Temperature: 1.0)
For each requested view, Crystallis generates a candidate Vega-Lite specification independently. At this stage, charts can use any colour, scale, or encoding — variety is encouraged to explore the design space.
Phase 2 — Consistency Annealing (Temperature: 0.5)
The system cross-references each candidate against the global specification:
Cross-view consistency checks:
✓ Colour mappings match the nuclear palette
✓ Axis scales use shared domains (e.g., all revenue charts use $0–$500K)
✓ Date axes share the same granularity (monthly, not mixed monthly/quarterly)
✓ Categorical sort orders are consistent (descending by measure)
✗ Font sizes mismatch → annealed to match the nuclear view
✗ Legend style differs → annealed to match
Each violation applies a correction — the system rewrites the Vega-Lite specification to align with the global spec.
Phase 3 — Freezing (Temperature: 0.0)
At the final temperature, all views are locked into a coordinated specification. The system generates the overall layout (grid, tabs, or scrolling), adds cross-view interactions, and produces the final output.
Results
The Crystallis paper evaluated against four baselines: GPT-4o direct generation, Code Interpreter, LIDA (an existing chart generation library), and a "concatenated" approach (generate charts then merge). The evaluation used three metrics:
| Metric | GPT-4o Direct | Code Interpreter | LIDA | Concat | Crystallis |
|---|---|---|---|---|---|
| Colour consistency | 32% | 45% | 51% | 38% | 94% |
| Scale consistency | 28% | 52% | 43% | 41% | 89% |
| Narrative coherence | 35% | 48% | 47% | 44% | 91% |
| User preference (A/B) | 12% | 18% | 15% | 16% | 55% |
| Execution success | 72% | 68% | 81% | 65% | 87% |
The standout result is colour consistency — 94% vs. 51% for the next-best approach — which directly results from progressive nucleation. By fixing the palette from the nuclear view and annealing all subsequent views, Crystallis eliminates the most obvious failure mode of naive multi-chart generation.
Practical Implications
For Data Journalists
Crystallis enables natural-language dashboard generation for exploratory data analysis. A journalist working with public economic data can describe the story they want to tell ("show GDP growth with sector breakdown and regional comparison") and receive a coherent set of charts without manual Vega-Lite editing.
For Dashboard Builders
Enterprise dashboard tools (Tableau, Power BI, Looker) require manual specification of cross-view coordination. Crystallis demonstrates a path toward auto-generated dashboards where coordination is encoded in the generation process itself, not added as a post-hoc step.
For Graph Visualisation
The principles extend beyond bar charts and scatter plots to graph visualisation dashboards — coordinated views of a knowledge graph showing node centrality (node-link diagram), community distribution (bar chart), temporal activity (timeline), and entity types (treemap), all sharing consistent colour encodings for entity categories.
Limitations
| Limitation | Details |
|---|---|
| Dataset size | Crystallis works with tabular data up to ~100K rows. Larger datasets require pre-aggregation. |
| View count | Generated dashboards are limited to 6 views. Beyond this, annealing complexity grows combinatorially. |
| Interaction | Cross-view brushing and linking are generated as declarative Vega-Lite signals but are not always functional in all renderers. |
| Template scope | Current views limited to standard statistical charts (bar, line, scatter, area, pie, map). Custom visualisations require extension. |
| LLM dependency | Quality degrades with less capable models. The paper uses GPT-4o and Claude 4 Sonnet for all experiments. |
Conclusion
Crystallis addresses a blind spot in LLM-based visualisation: the ability to generate not just individual charts, but coordinated, multi-view analytical displays that maintain cross-view consistency. Progressive nucleation and semantic annealing are simple but effective ideas — fix your encodings from the first view and anneal everything else to match.
For the graph visualisation community, the approach has natural extensions. A coordinated view of a knowledge graph — topology, community structure, centrality distribution, temporal evolution — would benefit from the same specification-first, anneal-to-consistency approach that Crystallis applies to tabular data. The tools are open-source, and the paper's reference implementation is available on GitHub.
As LLMs become the primary interface for data analysis, the ability to generate coherent multi-view visualisations will separate tools that produce pretty pictures from tools that enable genuine insight. Crystallis is a step in that direction.