Chart type selection guide¶
For each data type, the right chart, the wrong chart, and the accessibility floor. Use as a lookup before opening any charting library.
| # | Data type | Best chart | Secondary | When to use | When NOT to use |
|---|---|---|---|---|---|
| 1 | Trend Over Time | Line Chart | Area Chart, Smooth Area | Data has a time axis; user needs to observe rise/fall trends or rate of change o | Fewer than 4 data points (use stat card); more than 6 series (visual noise); no |
| 2 | Compare Categories | Bar Chart (Horizontal or Vertical) | Column Chart, Grouped Bar | Comparing discrete categories by magnitude; ranking or ordering is the core insi | Categories > 15 (use table or search); data has time dimension (use line); showi |
| 3 | Part-to-Whole | Pie Chart or Donut | Stacked Bar, Waffle Chart | ≤5 categories; one dominant segment vs rest; emphasis on visual proportion over | Categories > 5; slice differences < 5% (visually indistinguishable); user needs |
| 4 | Correlation / Distribution | Scatter Plot or Bubble Chart | Heat Map, Matrix | Exploring relationship between two continuous variables; identifying clusters or | Variables are categorical (use grouped bar); fewer than 20 points (patterns aren |
| 5 | Heatmap / Intensity | Heat Map or Choropleth | Grid Heat Map, Bubble Heat | Showing intensity/density across a 2D grid; time-based patterns (e.g., activity | Fewer than 20 cells (use bar); user needs to read exact values; colorblind users |
| 6 | Geographic Data | Choropleth Map or Bubble Map | Geographic Heat Map | Data has a regional/location dimension; spatial distribution is the core insight | Regions have very different sizes making visual comparison misleading (use bar); |
| 7 | Funnel / Flow | Funnel Chart or Sankey | Waterfall (for flows) | Sequential multi-stage process; showing conversion or drop-off rates between def | Stages aren't sequential; values don't decrease monotonically (use bar); fewer t |
| 8 | Performance vs Target | Gauge Chart or Bullet Chart | Dial, Thermometer | Single KPI measured against a defined target or threshold; dashboard summary con | No target or benchmark exists; comparing multiple KPIs at once (use bullet chart |
| 9 | Time-Series Forecast | Line with Confidence Band | Ribbon Chart | Historical data + model predictions; communicating uncertainty range to non-tech | No historical baseline; prediction confidence is too low to be useful; audience |
| 10 | Anomaly Detection | Line Chart with Highlights | Scatter with Alert | Monitoring a time-series for outliers; alerting users to unexpected spikes or di | Anomalies are predefined categories (use bar with highlight); real-time context |
| 11 | Hierarchical / Nested Data | Treemap | Sunburst, Nested Donut, Icicle | Showing size relationships within a hierarchy; overview of proportional structur | Hierarchy depth > 3 levels (too complex to read); user needs to compare sibling |
| 12 | Flow / Process Data | Sankey Diagram | Alluvial, Chord Diagram | Showing how quantities flow between nodes; multi-source multi-target distributio | Flow directions form loops (use network graph); fewer than 3 source-target pairs |
| 13 | Cumulative Changes | Waterfall Chart | Stacked Bar, Cascade | Showing how individual positive/negative components add up to a final total (e.g | Changes are not additive; more than 12 bars (readability breaks); audience expec |
| 14 | Multi-Variable Comparison | Radar / Spider Chart | Parallel Coordinates, Grouped Bar | Comparing multiple entities across the same fixed set of attributes (e.g., produ | Axes > 8 (unreadable); values need precise comparison (use grouped bar); audienc |
| 15 | Stock / Trading OHLC | Candlestick Chart | OHLC Bar, Heikin-Ashi | Financial time-series with Open/High/Low/Close data; trading or investment produ | Non-financial audience; no OHLC data available (use line chart); accessibility-f |
| 16 | Relationship / Connection Data | Network Graph | Hierarchical Tree, Adjacency Matrix | Mapping connections between entities; network topology or social graph explorati | Node count > 500 without clustering pre-applied; user needs precise connection c |
| 17 | Distribution / Statistical | Box Plot | Violin Plot, Beeswarm | Showing spread, median, and outliers of a dataset; comparing distributions acros | Fewer than 20 data points per group (distribution is not meaningful); audience u |
| 18 | Performance vs Target (Compact) | Bullet Chart | Gauge, Progress Bar | Dashboard with multiple KPIs side by side; space-constrained contexts where a ga | Single KPI with emphasis (use gauge); data has no defined target range; fewer th |
| 19 | Proportional / Percentage | Waffle Chart | Pictogram, Stacked Bar 100% | Showing what fraction of a whole is filled; percentage progress in a visually en | More than 5 categories (use stacked bar); exact values matter over visual propor |
| 20 | Hierarchical Proportional | Sunburst Chart | Treemap, Icicle, Circle Packing | Exploring nested proportions where both hierarchy and relative size matter (e.g. | More than 3 hierarchy levels (outer rings become unreadable); precision matters |
| 21 | Root Cause Analysis | Decomposition Tree | Decision Tree, Flow Chart | Decomposing a metric into contributing factors; AI-assisted analysis or BI drill | No clear parent-child causal relationship; audience expects a summary rather tha |
| 22 | 3D Spatial Data | 3D Scatter / Surface Plot | Volumetric Rendering, Point Cloud | Scientific/engineering context where Z-axis carries essential info not expressib | 2D projection conveys the same insight; mobile context; accessibility-required e |
| 23 | Real-Time Streaming | Streaming Area Chart | Ticker Tape, Moving Gauge | Live monitoring dashboards; IoT/ops data updating at ≥1 Hz; user needs current v | Update frequency < 1/min (use periodic-refresh line chart); flashing content wit |
| 24 | Sentiment / Emotion | Word Cloud with Sentiment | Sentiment Arc, Radar Chart | NLP output visualization; exploratory analysis of text corpus sentiment; frequen | Precise values matter (word size is inherently imprecise); screen-reader context |
| 25 | Process Mining | Process Map / Graph | Directed Acyclic Graph (DAG), Petri Net | Analyzing event logs to visualize actual process flows; identifying bottlenecks | No event log data available; audience expects a static flowchart (use diagram to |
Detailed specs¶
1. Trend Over Time → Line Chart¶
- When to use: Data has a time axis; user needs to observe rise/fall trends or rate of change over a continuous period
- When NOT to use: Fewer than 4 data points (use stat card); more than 6 series (visual noise); no time dimension exists
- Volume threshold: <1000 pts: SVG; ≥1000 pts: Canvas + downsampling; >10000: aggregate to intervals
- Color guidance: Primary: #0080FF. Multiple series: distinct colors + distinct line styles. Fill: 20% opacity
- A11y grade: AA
- A11y notes: Differentiate series by line style (solid/dashed/dotted) not color alone. Add pattern overlays for colorblind users.
- A11y fallback: Dashed/dotted lines per series; togglable data table with timestamps and values
- Library: Chart.js, Recharts, ApexCharts
- Interactive level: Hover + Zoom
2. Compare Categories → Bar Chart (Horizontal or Vertical)¶
- When to use: Comparing discrete categories by magnitude; ranking or ordering is the core insight; categories ≤ 15
- When NOT to use: Categories > 15 (use table or search); data has time dimension (use line); showing proportions (use waffle/stacked)
- Volume threshold: <20 categories: vertical bar; 20–50: horizontal bar; >50: paginated table
- Color guidance: Each bar: distinct color. Grouped: same hue family. Always sort descending by value
- A11y grade: AAA
- A11y notes: Value labels on each bar by default. Sort control for user reordering.
- A11y fallback: Value labels always visible; provide CSV export
- Library: Chart.js, Recharts, D3.js
- Interactive level: Hover + Sort
3. Part-to-Whole → Pie Chart or Donut¶
- When to use: ≤5 categories; one dominant segment vs rest; emphasis on visual proportion over exact values
- When NOT to use: Categories > 5; slice differences < 5% (visually indistinguishable); user needs precise values; accessibility-first context
- Volume threshold: Max 6 slices; beyond that switch to stacked bar 100%
- Color guidance: 5–6 max colors. Contrasting palette. Largest slice at 12 o'clock. Always label slices with %
- A11y grade: C
- A11y notes: Pie charts fail WCAG for colorblind users. Slices rely on color alone. Avoid as primary chart in a11y contexts.
- A11y fallback: Must provide stacked bar alternative + percentage data table as mandatory fallback
- Library: Chart.js, Recharts, D3.js
- Interactive level: Hover + Drill
4. Correlation / Distribution → Scatter Plot or Bubble Chart¶
- When to use: Exploring relationship between two continuous variables; identifying clusters or outliers in a dataset
- When NOT to use: Variables are categorical (use grouped bar); fewer than 20 points (patterns aren't meaningful); mobile-primary context
- Volume threshold: <500 pts: SVG; 500–5000: Canvas at 0.6–0.8 opacity; >5000: hexbin or aggregate first
- Color guidance: Color axis: gradient (blue → red). Bubble size: relative to 3rd variable. Opacity: 0.6–0.8 to show density
- A11y grade: B
- A11y notes: Provide data table alternative. Combine color + shape distinction for colorblind users.
- A11y fallback: Data table with correlation coefficient annotation; shape markers (circle/square/triangle) per group
- Library: D3.js, Plotly, Recharts
- Interactive level: Hover + Brush
5. Heatmap / Intensity → Heat Map or Choropleth¶
- When to use: Showing intensity/density across a 2D grid; time-based patterns (e.g., activity by hour × day)
- When NOT to use: Fewer than 20 cells (use bar); user needs to read exact values; colorblind users without pattern fallback
- Volume threshold: Up to 10,000 cells efficiently; beyond that aggregate; calendar heatmap: 365 cells max per SVG
- Color guidance: Gradient: Cool (blue) to Hot (red). Divergent scale for ±data. Always include numeric color legend
- A11y grade: B
- A11y notes: Pattern overlay for colorblind users. Numerical value on hover. Legend must include scale ticks.
- A11y fallback: Numerical overlay on hover; downloadable grid table with row/column labels
- Library: D3.js, Plotly, ApexCharts
- Interactive level: Hover + Zoom
6. Geographic Data → Choropleth Map or Bubble Map¶
- When to use: Data has a regional/location dimension; spatial distribution is the core insight for the user
- When NOT to use: Regions have very different sizes making visual comparison misleading (use bar); mobile-primary context
- Volume threshold: <1000 regions: SVG; ≥1000: Canvas/WebGL (Deck.gl); global maps: tile-based rendering
- Color guidance: Single color gradient per region group. Categorized colors for discrete types. Legend with clear scale breaks
- A11y grade: B
- A11y notes: Include text labels for major regions. Provide keyboard navigation between regions.
- A11y fallback: Region text labels; sortable data table by region name and value; keyboard-navigable regions
- Library: D3.js, Mapbox, Leaflet
- Interactive level: Pan + Zoom + Drill
7. Funnel / Flow → Funnel Chart or Sankey¶
- When to use: Sequential multi-stage process; showing conversion or drop-off rates between defined stages
- When NOT to use: Stages aren't sequential; values don't decrease monotonically (use bar); fewer than 3 stages
- Volume threshold: 3–8 stages optimal; beyond 8 stages group minor steps into 'Other'
- Color guidance: Stages: single color gradient (start → end). Show conversion % between each stage. Highlight biggest drop
- A11y grade: AA
- A11y notes: Explicit conversion % as text per stage. Stage labels always visible. Linear list view as fallback.
- A11y fallback: Provide linear list view with stage name + count + drop-off %; keyboard traversal
- Library: D3.js, Recharts, Custom SVG
- Interactive level: Hover + Drill
8. Performance vs Target → Gauge Chart or Bullet Chart¶
- When to use: Single KPI measured against a defined target or threshold; dashboard summary context
- When NOT to use: No target or benchmark exists; comparing multiple KPIs at once (use bullet chart grid)
- Volume threshold: Single metric per gauge; for 3+ KPIs use bullet chart grid layout
- Color guidance: Performance: Red → Yellow → Green gradient. Target: marker line. Threshold zones clearly differentiated
- A11y grade: AA
- A11y notes: Always show numerical value + % of target as text beside chart. Never rely on color position alone.
- A11y fallback: Numerical value + % of target shown as visible text; ARIA live region for real-time updates
- Library: D3.js, ApexCharts, Custom SVG
- Interactive level: Hover
9. Time-Series Forecast → Line with Confidence Band¶
- When to use: Historical data + model predictions; communicating uncertainty range to non-technical stakeholders
- When NOT to use: No historical baseline; prediction confidence is too low to be useful; audience is not data-literate
- Volume threshold: Keep historical window to 30–90 days for readability; forecast horizon ≤ 30% of visible x-axis range
- Color guidance: Actual: solid line #0080FF. Forecast: dashed #FF9500. Confidence band: 15% opacity fill same hue
- A11y grade: AA
- A11y notes: Toggle between actual-only and forecast views. Legend must distinguish lines beyond color (solid vs dashed).
- A11y fallback: Toggle actual/forecast independently; legend labels must include line-style description
- Library: Chart.js, ApexCharts, Plotly
- Interactive level: Hover + Toggle
10. Anomaly Detection → Line Chart with Highlights¶
- When to use: Monitoring a time-series for outliers; alerting users to unexpected spikes or dips in operational data
- When NOT to use: Anomalies are predefined categories (use bar with highlight); real-time context without a pause control
- Volume threshold: Stream at ≤60fps with Canvas; batch: up to 10,000 pts; mark anomalies as a separate data layer
- Color guidance: Normal: #0080FF solid line. Anomaly marker: #FF0000 circle + filled. Alert band: #FFF3CD background zone
- A11y grade: AA
- A11y notes: Use shape marker (not color only) for anomaly points. Add text annotation per anomaly event.
- A11y fallback: Text alert annotation per anomaly; anomaly summary list panel alongside chart
- Library: D3.js, Plotly, ApexCharts
- Interactive level: Hover + Alert
11. Hierarchical / Nested Data → Treemap¶
- When to use: Showing size relationships within a hierarchy; overview of proportional structure (e.g., budget breakdown)
- When NOT to use: Hierarchy depth > 3 levels (too complex to read); user needs to compare sibling values precisely
- Volume threshold: <200 nodes: SVG; 200–1000: Canvas; >1000: paginate or pre-filter before rendering
- Color guidance: Parent nodes: distinct hues. Children: lighter shades of same hue. White separator borders: 2–3px
- A11y grade: C
- A11y notes: Poor baseline accessibility. Always provide table alternative as primary view. Label all large areas.
- A11y fallback: Collapsible tree table as primary view; treemap as supplementary visual only
- Library: D3.js, Recharts, ApexCharts
- Interactive level: Hover + Drilldown
12. Flow / Process Data → Sankey Diagram¶
- When to use: Showing how quantities flow between nodes; multi-source multi-target distribution
- When NOT to use: Flow directions form loops (use network graph); fewer than 3 source-target pairs; mobile-primary context
- Volume threshold: <50 flows: SVG; ≥50: Canvas; >200 flows: aggregate minor flows into 'Other' node
- Color guidance: Gradient from source to target color. Flow opacity: 0.4–0.6. Node labels always visible
- A11y grade: C
- A11y notes: Structural flow charts cannot be conveyed by color alone. Provide flow table. Avoid on mobile.
- A11y fallback: Flow table (Source → Target → Value); keyboard-traversable node list with tab stops
- Library: D3.js (d3-sankey), Plotly
- Interactive level: Hover + Drilldown
13. Cumulative Changes → Waterfall Chart¶
- When to use: Showing how individual positive/negative components add up to a final total (e.g., P&L, budget variance)
- When NOT to use: Changes are not additive; more than 12 bars (readability breaks); audience expects a simple total
- Volume threshold: 4–12 bars optimal; beyond 12 aggregate minor items into a single 'Other' bar
- Color guidance: Increases: #4CAF50. Decreases: #F44336. Start total: #2196F3. End total: #0D47A1. Running total line: dashed
- A11y grade: AA
- A11y notes: Color + directional arrow icon per bar (not color alone). Labels on every bar.
- A11y fallback: Table with running total column; directional arrow icons per row
- Library: ApexCharts, Highcharts, Plotly
- Interactive level: Hover
14. Multi-Variable Comparison → Radar / Spider Chart¶
- When to use: Comparing multiple entities across the same fixed set of attributes (e.g., product feature comparison)
- When NOT to use: Axes > 8 (unreadable); values need precise comparison (use grouped bar); audience unfamiliar with radar charts
- Volume threshold: 2–3 datasets maximum per chart; 5–8 axes; beyond 8 axes switch to parallel coordinates
- Color guidance: Single dataset: #0080FF at 20% fill. Multiple: distinct hues with 30% fill. Border: full opacity
- A11y grade: B
- A11y notes: Limit axes to 5–8. Always provide grouped bar chart alternative for precise reading.
- A11y fallback: Grouped bar chart as mandatory alternative; include raw data table
- Library: Chart.js, Recharts, ApexCharts
- Interactive level: Hover + Toggle
15. Stock / Trading OHLC → Candlestick Chart¶
- When to use: Financial time-series with Open/High/Low/Close data; trading or investment product context only
- When NOT to use: Non-financial audience; no OHLC data available (use line chart); accessibility-first context
- Volume threshold: Real-time: Canvas required. Historical: paginate by time range. Max 500 candles visible at once
- Color guidance: Bullish: #26A69A. Bearish: #EF5350. Volume bars: 40% opacity below. Body fill vs hollow for OHLC style
- A11y grade: B
- A11y notes: Provide OHLC data table. Colorblind: use fill vs outline pattern (bullish = filled, bearish = hollow).
- A11y fallback: OHLC data table with sortable columns; numeric summary panel (daily change %)
- Library: Lightweight Charts (TradingView), ApexCharts
- Interactive level: Real-time + Hover + Zoom
16. Relationship / Connection Data → Network Graph¶
- When to use: Mapping connections between entities; network topology or social graph exploration context
- When NOT to use: Node count > 500 without clustering pre-applied; user needs precise connection counts; mobile context
- Volume threshold: ≤100 nodes: SVG; 101–500: Canvas; >500: must apply clustering/LOD before rendering
- Color guidance: Node types: categorical colors. Edges: #90A4AE at 60% opacity. Highlight path: #F59E0B
- A11y grade: D
- A11y notes: Fundamentally inaccessible without alternative. Never use as sole representation. Always provide list alternative.
- A11y fallback: Adjacency list table (Node A → Node B → Weight); hierarchical tree view when structure allows
- Library: D3.js (d3-force), Vis.js, Cytoscape.js
- Interactive level: Drilldown + Hover + Drag
17. Distribution / Statistical → Box Plot¶
- When to use: Showing spread, median, and outliers of a dataset; comparing distributions across multiple groups
- When NOT to use: Fewer than 20 data points per group (distribution is not meaningful); audience unfamiliar with statistical charts
- Volume threshold: Any sample size; aggregated representation so rendering is ⚡ Excellent at any volume
- Color guidance: Box fill: #BBDEFB. Border: #1976D2. Median line: #D32F2F bold. Outlier dots: #F44336
- A11y grade: AA
- A11y notes: Include stats summary table. Annotate outlier count in chart subtitle.
- A11y fallback: Stats summary table (min / Q1 / median / Q3 / max / mean); outlier count annotation
- Library: Plotly, D3.js, Chart.js (plugin)
- Interactive level: Hover
18. Performance vs Target (Compact) → Bullet Chart¶
- When to use: Dashboard with multiple KPIs side by side; space-constrained contexts where a gauge is too large
- When NOT to use: Single KPI with emphasis (use gauge); data has no defined target range; fewer than 3 KPIs
- Volume threshold: Ideal for 3–10 bullet charts in a grid; scales to any count efficiently
- Color guidance: Qualitative ranges: #FFCDD2 / #FFF9C4 / #C8E6C9 (bad/ok/good). Performance bar: #1976D2. Target: black 3px marker
- A11y grade: AAA
- A11y notes: All values always visible as text. Color ranges are labeled with text thresholds not color alone.
- A11y fallback: Numerical values always visible (not hover-only); color ranges labeled with threshold text
- Library: D3.js, Plotly, Custom SVG
- Interactive level: Hover
19. Proportional / Percentage → Waffle Chart¶
- When to use: Showing what fraction of a whole is filled; percentage progress in a visually engaging and accessible format
- When NOT to use: More than 5 categories (use stacked bar); exact values matter over visual proportion; very tight space
- Volume threshold: 10×10 grid standard (100 cells); for > 5 categories switch to stacked 100% bar
- Color guidance: 3–5 categories max. 2–3px gap between cells. Each category a distinct accessible color pair
- A11y grade: AA
- A11y notes: Better than pie for accessibility. Percentage text label always visible. Each cell has aria-label.
- A11y fallback: Percentage text always visible; grid cells labeled with aria-label value; provide legend
- Library: D3.js, React-Waffle, Custom CSS Grid
- Interactive level: Hover
20. Hierarchical Proportional → Sunburst Chart¶
- When to use: Exploring nested proportions where both hierarchy and relative size matter (e.g., org spend breakdown)
- When NOT to use: More than 3 hierarchy levels (outer rings become unreadable); precision matters over overview; mobile
- Volume threshold: <100 nodes: SVG; 100–500: Canvas; >500: filter to top N before rendering
- Color guidance: Center to outer: darker to lighter hue. Each level 15–20% lighter. Contrasting border between sectors
- A11y grade: C
- A11y notes: Poor accessibility beyond 2 levels. Mandatory table alternative required for any production use.
- A11y fallback: Collapsible indented list with percentages; breadcrumb trail for current drill-down state
- Library: D3.js (d3-hierarchy), Recharts, ApexCharts
- Interactive level: Drilldown + Hover
21. Root Cause Analysis → Decomposition Tree¶
- When to use: Decomposing a metric into contributing factors; AI-assisted analysis or BI drill-down scenarios
- When NOT to use: No clear parent-child causal relationship; audience expects a summary rather than exploration
- Volume threshold: Up to 5 levels deep; limit visible nodes to 20 per level for readability; lazy-load deeper levels
- Color guidance: Positive impact nodes: #2563EB. Negative impact nodes: #EF4444. Neutral connectors: #94A3B8
- A11y grade: AA
- A11y notes: Keyboard-navigable expand/collapse. Screen reader announces node value and % contribution.
- A11y fallback: Keyboard expand/collapse tree; screen reader announces node label + value + % impact
- Library: Power BI (native), React-Flow, Custom D3.js
- Interactive level: Drill + Expand
22. 3D Spatial Data → 3D Scatter / Surface Plot¶
- When to use: Scientific/engineering context where Z-axis carries essential info not expressible in 2D
- When NOT to use: 2D projection conveys the same insight; mobile context; accessibility-required environments; standard business dashboards
- Volume threshold: WebGL required. Deck.gl: up to 1M points. Three.js: LOD required beyond 50,000 pts
- Color guidance: Depth cues: lighting and shading. Z-axis: color gradient (cool → warm). Transparent overlapping: opacity 0.4
- A11y grade: D
- A11y notes: 3D spatial charts are fundamentally inaccessible. Must not be used as primary chart type in any product UI.
- A11y fallback: Mandatory 2D projection view + data table; do not use as primary chart type in product UI
- Library: Three.js, Deck.gl, Plotly 3D
- Interactive level: Rotate + Zoom + VR
23. Real-Time Streaming → Streaming Area Chart¶
- When to use: Live monitoring dashboards; IoT/ops data updating at ≥1 Hz; user needs current value at a glance
- When NOT to use: Update frequency < 1/min (use periodic-refresh line chart); flashing content without reduced-motion support
- Volume threshold: Canvas/WebGL required. Buffer last 60–300s of data. Downsample older data on scroll
- Color guidance: Current pulse: #00FF00 (dark theme) or #0080FF (light theme). History: fading opacity. Grid: dark background
- A11y grade: B
- A11y notes: Pause/resume control required. Current value as large visible text KPI. Respect prefers-reduced-motion.
- A11y fallback: Pause/resume button required; current value shown as large text KPI; prefers-reduced-motion: freeze animation
- Library: Smoothed D3.js, CanvasJS
- Interactive level: Real-time + Pause + Zoom
24. Sentiment / Emotion → Word Cloud with Sentiment¶
- When to use: NLP output visualization; exploratory analysis of text corpus sentiment; frequency-weighted keyword overview
- When NOT to use: Precise values matter (word size is inherently imprecise); screen-reader context; corpus < 50 items
- Volume threshold: 50–5000 terms optimal. Beyond 5000: apply top-N filtering before render. Avoid on mobile
- Color guidance: Positive: #22C55E. Negative: #EF4444. Neutral: #94A3B8. Word size maps to frequency
- A11y grade: C
- A11y notes: Word clouds fail screen readers. Never use as sole output of NLP analysis. Always pair with list view.
- A11y fallback: Sortable list view by frequency with sentiment label column; word cloud as supplementary only
- Library: D3-cloud, Highcharts, Nivo
- Interactive level: Hover + Filter
25. Process Mining → Process Map / Graph¶
- When to use: Analyzing event logs to visualize actual process flows; identifying bottlenecks and deviations in ops/product funnels
- When NOT to use: No event log data available; audience expects a static flowchart (use diagram tool); node count > 100 without pre-filtering
- Volume threshold: <30 nodes: SVG; 30–100: Canvas; >100: apply variant filtering (top 80% of cases) before rendering
- Color guidance: Happy path: #10B981 thick line. Deviations: #F59E0B thin line. Bottleneck nodes: #EF4444 fill
- A11y grade: B
- A11y notes: Complex graphs are hard to navigate. Provide path summary text. Highlight top 3 bottlenecks as annotations.
- A11y fallback: Path summary table (variant → frequency → avg duration); top 3 bottlenecks as text annotation panel
- Library: React-Flow, Cytoscape.js, Recharts
- Interactive level: Drag + Node-Click