Every Semiotic chart declares a fixed set of capabilities — does it support a ref-based push API? Server-side rendering? Linked hover for cross-chart highlight? A top-level legend? The matrix below is generated directly fromsrc/components/charts/shared/chartSpecs.ts and validated in CI against the actual HOC source. Use the toggles to narrow the list to charts that satisfy a set of constraints.
For programmatic access, the same matrix is exposed to thesuggestChart AI tool — passcapabilities: { push: true, linkedHover: true } to the MCP suggestChart tool and it will only surface charts that satisfy your constraints.
Require:54 of 54 charts match
XY (continuous-axis)
| Chart | Push | Linked Hover | SSR | Selection | Legend | Color | Layout | Features |
|---|
| AreaChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | forecastanomalybandseries-features |
| BubbleChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | size-encodingstreaming-domainregression-overlay |
| CandlestickChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | ohlc |
| ConnectedScatterplot | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | regression-overlayforecastanomalyseries-features |
| DifferenceChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | crossover-segmentation |
| Heatmap | ✓ | ✓ | ✓ | ✓ | ✓ | sequential | plugin | — |
| LineChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | forecastanomalybandseries-featuresgap-handlingdirect-labelsendpoint-labels |
| MinimapChart | — | — | — | — | ✓ | categorical | plugin | brushoverview-detailcomposite-delegates-interactionhoc-ssr-only |
| MultiAxisLineChart | ✓ | ✓ | — | ✓ | ✓ | categorical | plugin | dual-axishoc-ssr-only |
| QuadrantChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | quadrants |
| Scatterplot | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | regression-overlayforecastanomalyseries-features |
| ScatterplotMatrix | — | — | — | — | ✓ | categorical | plugin | matrixbrushcomposite-delegates-interactionhoc-ssr-only |
| StackedAreaChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | stackstreamgraph |
Ordinal (categorical)
| Chart | Push | Linked Hover | SSR | Selection | Legend | Color | Layout | Features |
|---|
| BarChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | regression-overlay |
| BoxPlot | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | statistical |
| DonutChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | — |
| DotPlot | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | regression-overlay |
| FunnelChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | — |
| GaugeChart | — | — | ✓ | — | — | threshold | synthetic | threshold-zonesvalue-onlycontrolled-prop-streaming |
| GroupedBarChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | — |
| Histogram | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | — |
| LikertChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | — |
| PieChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | — |
| RidgelinePlot | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | — |
| StackedBarChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | stack |
| SwarmPlot | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | — |
| SwimlaneChart | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | brush |
| ViolinPlot | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | statistical |
Network
| Chart | Push | Linked Hover | SSR | Selection | Legend | Color | Layout | Features |
|---|
| ChordDiagram | ✓ | ✓ | ✓ | ✓ | — | categorical | plugin | — |
| CirclePack | — | ✓ | ✓ | ✓ | — | categorical | plugin | hierarchy |
| ForceDirectedGraph | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | force-simulation |
| OrbitDiagram | — | ✓ | — | ✓ | — | categorical | plugin | hierarchyanimatedhoc-ssr-only |
| ProcessSankey | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | custom | temporalparticleslane-reuse |
| SankeyDiagram | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | — |
| TreeDiagram | — | ✓ | ✓ | ✓ | — | categorical | plugin | hierarchy |
| Treemap | — | ✓ | ✓ | ✓ | — | categorical | plugin | hierarchy |
Geo
| Chart | Push | Linked Hover | SSR | Selection | Legend | Color | Layout | Features |
|---|
| ChoroplethMap | — | ✓ | ✓ | ✓ | ✓ | sequential | plugin | controlled-prop-streaming |
| DistanceCartogram | ✓ | ✓ | — | ✓ | ✓ | categorical | plugin | distortionhoc-ssr-only |
| FlowMap | ✓ | ✓ | ✓ | ✓ | ✓ | categorical | plugin | particles |
| ProportionalSymbolMap | ✓ | ✓ | ✓ | ✓ | ✓ | sequential | plugin | — |
Realtime
| Chart | Push | Linked Hover | SSR | Selection | Legend | Color | Layout | Features |
|---|
| RealtimeHeatmap | ✓ | ✓ | — | ✓ | ✓ | sequential | plugin | live-stream |
| RealtimeHistogram | ✓ | ✓ | — | ✓ | ✓ | categorical | plugin | live-streambrush |
| RealtimeLineChart | ✓ | ✓ | — | ✓ | ✓ | categorical | plugin | live-stream |
| RealtimeSwarmChart | ✓ | ✓ | — | ✓ | ✓ | categorical | plugin | live-stream |
| RealtimeWaterfallChart | ✓ | ✓ | — | ✓ | ✓ | categorical | plugin | live-stream |
| TemporalHistogram | — | ✓ | — | ✓ | ✓ | categorical | plugin | brush |
Pass capability constraints to the MCP suggestCharttool to get a narrowed recommendation set:
JSON
{ "name": "suggestChart", "arguments": { "data": [ { "category": "A", "value": 10 }, { "category": "B", "value": 20 } ], "intent": "comparison", "capabilities": { "push": true, "linkedHover": true } } }
Charts that don't satisfy every constraint are dropped; the tool also reports which suggestions were filtered out so callers can relax constraints if the result set is empty.
Raw JSON
The full matrix is published atai/capabilities.json with the same shape shown below. The npm run docs:capabilities script regenerates both the markdown table and this JSON; CI'scheck:capabilities step locks them againstchartSpecs.ts.
JSON
{ "__generated": true, "__source": "src/components/charts/shared/chartSpecs.ts", "charts": { "BarChart": { "category": "ordinal", "supportsLegend": true, "supportsSelection": true, "supportsLinkedHover": true, "supportsPush": true, "supportsSSR": true, "colorModel": "categorical", "layoutMode": "plugin", "specialFeatures": [ "regression-overlay" ] }, "...": "(54 charts indexed total)" } }