You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

19 KiB

1NoData TypeKeywordsBest Chart TypeSecondary OptionsWhen to UseWhen NOT to UseData Volume ThresholdColor GuidanceAccessibility GradeAccessibility NotesA11y FallbackLibrary RecommendationInteractive Level
21Trend Over Timetrend, time-series, line, growth, timeline, progressLine ChartArea Chart, Smooth AreaData has a time axis; user needs to observe rise/fall trends or rate of change over a continuous periodFewer than 4 data points (use stat card); more than 6 series (visual noise); no time dimension exists<1000 pts: SVG; ≥1000 pts: Canvas + downsampling; >10000: aggregate to intervalsPrimary: #0080FF. Multiple series: distinct colors + distinct line styles. Fill: 20% opacityAADifferentiate series by line style (solid/dashed/dotted) not color alone. Add pattern overlays for colorblind users.Dashed/dotted lines per series; togglable data table with timestamps and valuesChart.js, Recharts, ApexChartsHover + Zoom
32Compare Categoriescompare, categories, bar, comparison, rankingBar Chart (Horizontal or Vertical)Column Chart, Grouped BarComparing discrete categories by magnitude; ranking or ordering is the core insight; categories ≤ 15Categories > 15 (use table or search); data has time dimension (use line); showing proportions (use waffle/stacked)<20 categories: vertical bar; 20–50: horizontal bar; >50: paginated tableEach bar: distinct color. Grouped: same hue family. Always sort descending by valueAAAValue labels on each bar by default. Sort control for user reordering.Value labels always visible; provide CSV exportChart.js, Recharts, D3.jsHover + Sort
43Part-to-Wholepart-to-whole, pie, donut, percentage, proportion, sharePie Chart or DonutStacked Bar, Waffle Chart≤5 categories; one dominant segment vs rest; emphasis on visual proportion over exact valuesCategories > 5; slice differences < 5% (visually indistinguishable); user needs precise values; accessibility-first contextMax 6 slices; beyond that switch to stacked bar 100%5–6 max colors. Contrasting palette. Largest slice at 12 o'clock. Always label slices with %CPie charts fail WCAG for colorblind users. Slices rely on color alone. Avoid as primary chart in a11y contexts.Must provide stacked bar alternative + percentage data table as mandatory fallbackChart.js, Recharts, D3.jsHover + Drill
54Correlation / Distributioncorrelation, distribution, scatter, relationship, pattern, clusterScatter Plot or Bubble ChartHeat Map, MatrixExploring relationship between two continuous variables; identifying clusters or outliers in a datasetVariables are categorical (use grouped bar); fewer than 20 points (patterns aren't meaningful); mobile-primary context<500 pts: SVG; 500–5000: Canvas at 0.6–0.8 opacity; >5000: hexbin or aggregate firstColor axis: gradient (blue → red). Bubble size: relative to 3rd variable. Opacity: 0.6–0.8 to show densityBProvide data table alternative. Combine color + shape distinction for colorblind users.Data table with correlation coefficient annotation; shape markers (circle/square/triangle) per groupD3.js, Plotly, RechartsHover + Brush
65Heatmap / Intensityheatmap, heat-map, intensity, density, matrix, calendarHeat Map or ChoroplethGrid Heat Map, Bubble HeatShowing intensity/density across a 2D grid; time-based patterns (e.g., activity by hour × day)Fewer than 20 cells (use bar); user needs to read exact values; colorblind users without pattern fallbackUp to 10,000 cells efficiently; beyond that aggregate; calendar heatmap: 365 cells max per SVGGradient: Cool (blue) to Hot (red). Divergent scale for ±data. Always include numeric color legendBPattern overlay for colorblind users. Numerical value on hover. Legend must include scale ticks.Numerical overlay on hover; downloadable grid table with row/column labelsD3.js, Plotly, ApexChartsHover + Zoom
76Geographic Datageographic, map, location, region, geo, spatial, choroplethChoropleth Map or Bubble MapGeographic Heat MapData has a regional/location dimension; spatial distribution is the core insight for the userRegions have very different sizes making visual comparison misleading (use bar); mobile-primary context<1000 regions: SVG; ≥1000: Canvas/WebGL (Deck.gl); global maps: tile-based renderingSingle color gradient per region group. Categorized colors for discrete types. Legend with clear scale breaksBInclude text labels for major regions. Provide keyboard navigation between regions.Region text labels; sortable data table by region name and value; keyboard-navigable regionsD3.js, Mapbox, LeafletPan + Zoom + Drill
87Funnel / Flowfunnel, flow, conversion, drop-off, pipeline, stagesFunnel Chart or SankeyWaterfall (for flows)Sequential multi-stage process; showing conversion or drop-off rates between defined stagesStages aren't sequential; values don't decrease monotonically (use bar); fewer than 3 stages3–8 stages optimal; beyond 8 stages group minor steps into 'Other'Stages: single color gradient (start → end). Show conversion % between each stage. Highlight biggest dropAAExplicit conversion % as text per stage. Stage labels always visible. Linear list view as fallback.Provide linear list view with stage name + count + drop-off %; keyboard traversalD3.js, Recharts, Custom SVGHover + Drill
98Performance vs Targetperformance, target, kpi, gauge, goal, threshold, progressGauge Chart or Bullet ChartDial, ThermometerSingle KPI measured against a defined target or threshold; dashboard summary contextNo target or benchmark exists; comparing multiple KPIs at once (use bullet chart grid)Single metric per gauge; for 3+ KPIs use bullet chart grid layoutPerformance: Red → Yellow → Green gradient. Target: marker line. Threshold zones clearly differentiatedAAAlways show numerical value + % of target as text beside chart. Never rely on color position alone.Numerical value + % of target shown as visible text; ARIA live region for real-time updatesD3.js, ApexCharts, Custom SVGHover
109Time-Series Forecastforecast, prediction, confidence, band, projection, estimateLine with Confidence BandRibbon ChartHistorical data + model predictions; communicating uncertainty range to non-technical stakeholdersNo historical baseline; prediction confidence is too low to be useful; audience is not data-literateKeep historical window to 30–90 days for readability; forecast horizon ≤ 30% of visible x-axis rangeActual: solid line #0080FF. Forecast: dashed #FF9500. Confidence band: 15% opacity fill same hueAAToggle between actual-only and forecast views. Legend must distinguish lines beyond color (solid vs dashed).Toggle actual/forecast independently; legend labels must include line-style descriptionChart.js, ApexCharts, PlotlyHover + Toggle
1110Anomaly Detectionanomaly, outlier, spike, alert, detection, monitoring, deviationLine Chart with HighlightsScatter with AlertMonitoring a time-series for outliers; alerting users to unexpected spikes or dips in operational dataAnomalies are predefined categories (use bar with highlight); real-time context without a pause controlStream at ≤60fps with Canvas; batch: up to 10,000 pts; mark anomalies as a separate data layerNormal: #0080FF solid line. Anomaly marker: #FF0000 circle + filled. Alert band: #FFF3CD background zoneAAUse shape marker (not color only) for anomaly points. Add text annotation per anomaly event.Text alert annotation per anomaly; anomaly summary list panel alongside chartD3.js, Plotly, ApexChartsHover + Alert
1211Hierarchical / Nested Datahierarchy, nested, treemap, parent, children, breakdown, drillTreemapSunburst, Nested Donut, IcicleShowing size relationships within a hierarchy; overview of proportional structure (e.g., budget breakdown)Hierarchy depth > 3 levels (too complex to read); user needs to compare sibling values precisely<200 nodes: SVG; 200–1000: Canvas; >1000: paginate or pre-filter before renderingParent nodes: distinct hues. Children: lighter shades of same hue. White separator borders: 2–3pxCPoor baseline accessibility. Always provide table alternative as primary view. Label all large areas.Collapsible tree table as primary view; treemap as supplementary visual onlyD3.js, Recharts, ApexChartsHover + Drilldown
1312Flow / Process Dataflow, process, sankey, distribution, source, target, transferSankey DiagramAlluvial, Chord DiagramShowing how quantities flow between nodes; multi-source multi-target distributionFlow directions form loops (use network graph); fewer than 3 source-target pairs; mobile-primary context<50 flows: SVG; ≥50: Canvas; >200 flows: aggregate minor flows into 'Other' nodeGradient from source to target color. Flow opacity: 0.4–0.6. Node labels always visibleCStructural flow charts cannot be conveyed by color alone. Provide flow table. Avoid on mobile.Flow table (Source → Target → Value); keyboard-traversable node list with tab stopsD3.js (d3-sankey), PlotlyHover + Drilldown
1413Cumulative Changeswaterfall, cumulative, variance, incremental, bridge, deltaWaterfall ChartStacked Bar, CascadeShowing how individual positive/negative components add up to a final total (e.g., P&L, budget variance)Changes are not additive; more than 12 bars (readability breaks); audience expects a simple total4–12 bars optimal; beyond 12 aggregate minor items into a single 'Other' barIncreases: #4CAF50. Decreases: #F44336. Start total: #2196F3. End total: #0D47A1. Running total line: dashedAAColor + directional arrow icon per bar (not color alone). Labels on every bar.Table with running total column; directional arrow icons per rowApexCharts, Highcharts, PlotlyHover
1514Multi-Variable Comparisonradar, spider, multi-variable, attributes, dimensions, comparisonRadar / Spider ChartParallel Coordinates, Grouped BarComparing multiple entities across the same fixed set of attributes (e.g., product feature comparison)Axes > 8 (unreadable); values need precise comparison (use grouped bar); audience unfamiliar with radar charts2–3 datasets maximum per chart; 5–8 axes; beyond 8 axes switch to parallel coordinatesSingle dataset: #0080FF at 20% fill. Multiple: distinct hues with 30% fill. Border: full opacityBLimit axes to 5–8. Always provide grouped bar chart alternative for precise reading.Grouped bar chart as mandatory alternative; include raw data tableChart.js, Recharts, ApexChartsHover + Toggle
1615Stock / Trading OHLCstock, trading, ohlc, candlestick, finance, price, volumeCandlestick ChartOHLC Bar, Heikin-AshiFinancial time-series with Open/High/Low/Close data; trading or investment product context onlyNon-financial audience; no OHLC data available (use line chart); accessibility-first contextReal-time: Canvas required. Historical: paginate by time range. Max 500 candles visible at onceBullish: #26A69A. Bearish: #EF5350. Volume bars: 40% opacity below. Body fill vs hollow for OHLC styleBProvide OHLC data table. Colorblind: use fill vs outline pattern (bullish = filled, bearish = hollow).OHLC data table with sortable columns; numeric summary panel (daily change %)Lightweight Charts (TradingView), ApexChartsReal-time + Hover + Zoom
1716Relationship / Connection Datanetwork, graph, nodes, edges, connections, relationships, forceNetwork GraphHierarchical Tree, Adjacency MatrixMapping connections between entities; network topology or social graph exploration contextNode count > 500 without clustering pre-applied; user needs precise connection counts; mobile context≤100 nodes: SVG; 101–500: Canvas; >500: must apply clustering/LOD before renderingNode types: categorical colors. Edges: #90A4AE at 60% opacity. Highlight path: #F59E0BDFundamentally inaccessible without alternative. Never use as sole representation. Always provide list alternative.Adjacency list table (Node A → Node B → Weight); hierarchical tree view when structure allowsD3.js (d3-force), Vis.js, Cytoscape.jsDrilldown + Hover + Drag
1817Distribution / Statisticaldistribution, statistical, spread, median, outlier, quartile, boxplotBox PlotViolin Plot, BeeswarmShowing spread, median, and outliers of a dataset; comparing distributions across multiple groupsFewer than 20 data points per group (distribution is not meaningful); audience unfamiliar with statistical chartsAny sample size; aggregated representation so rendering is ⚡ Excellent at any volumeBox fill: #BBDEFB. Border: #1976D2. Median line: #D32F2F bold. Outlier dots: #F44336AAInclude stats summary table. Annotate outlier count in chart subtitle.Stats summary table (min / Q1 / median / Q3 / max / mean); outlier count annotationPlotly, D3.js, Chart.js (plugin)Hover
1918Performance vs Target (Compact)bullet, compact, kpi, dashboard, target, benchmark, rangeBullet ChartGauge, Progress BarDashboard with multiple KPIs side by side; space-constrained contexts where a gauge is too largeSingle KPI with emphasis (use gauge); data has no defined target range; fewer than 3 KPIsIdeal for 3–10 bullet charts in a grid; scales to any count efficientlyQualitative ranges: #FFCDD2 / #FFF9C4 / #C8E6C9 (bad/ok/good). Performance bar: #1976D2. Target: black 3px markerAAAAll values always visible as text. Color ranges are labeled with text thresholds not color alone.Numerical values always visible (not hover-only); color ranges labeled with threshold textD3.js, Plotly, Custom SVGHover
2019Proportional / Percentagewaffle, percentage, proportion, progress, filled, gridWaffle ChartPictogram, Stacked Bar 100%Showing what fraction of a whole is filled; percentage progress in a visually engaging and accessible formatMore than 5 categories (use stacked bar); exact values matter over visual proportion; very tight space10×10 grid standard (100 cells); for > 5 categories switch to stacked 100% bar3–5 categories max. 2–3px gap between cells. Each category a distinct accessible color pairAABetter than pie for accessibility. Percentage text label always visible. Each cell has aria-label.Percentage text always visible; grid cells labeled with aria-label value; provide legendD3.js, React-Waffle, Custom CSS GridHover
2120Hierarchical Proportionalsunburst, hierarchy, nested, proportion, radial, circleSunburst ChartTreemap, Icicle, Circle PackingExploring nested proportions where both hierarchy and relative size matter (e.g., org spend breakdown)More than 3 hierarchy levels (outer rings become unreadable); precision matters over overview; mobile<100 nodes: SVG; 100–500: Canvas; >500: filter to top N before renderingCenter to outer: darker to lighter hue. Each level 15–20% lighter. Contrasting border between sectorsCPoor accessibility beyond 2 levels. Mandatory table alternative required for any production use.Collapsible indented list with percentages; breadcrumb trail for current drill-down stateD3.js (d3-hierarchy), Recharts, ApexChartsDrilldown + Hover
2221Root Cause Analysisroot cause, decomposition, tree, hierarchy, drill-down, ai-split, attributionDecomposition TreeDecision Tree, Flow ChartDecomposing a metric into contributing factors; AI-assisted analysis or BI drill-down scenariosNo clear parent-child causal relationship; audience expects a summary rather than explorationUp to 5 levels deep; limit visible nodes to 20 per level for readability; lazy-load deeper levelsPositive impact nodes: #2563EB. Negative impact nodes: #EF4444. Neutral connectors: #94A3B8AAKeyboard-navigable expand/collapse. Screen reader announces node value and % contribution.Keyboard expand/collapse tree; screen reader announces node label + value + % impactPower BI (native), React-Flow, Custom D3.jsDrill + Expand
23223D Spatial Data3d, spatial, immersive, terrain, molecular, volumetric, point-cloud3D Scatter / Surface PlotVolumetric Rendering, Point CloudScientific/engineering context where Z-axis carries essential info not expressible in 2D2D projection conveys the same insight; mobile context; accessibility-required environments; standard business dashboardsWebGL required. Deck.gl: up to 1M points. Three.js: LOD required beyond 50,000 ptsDepth cues: lighting and shading. Z-axis: color gradient (cool → warm). Transparent overlapping: opacity 0.4D3D spatial charts are fundamentally inaccessible. Must not be used as primary chart type in any product UI.Mandatory 2D projection view + data table; do not use as primary chart type in product UIThree.js, Deck.gl, Plotly 3DRotate + Zoom + VR
2423Real-Time Streamingstreaming, real-time, ticker, live, velocity, pulse, monitoringStreaming Area ChartTicker Tape, Moving GaugeLive monitoring dashboards; IoT/ops data updating at ≥1 Hz; user needs current value at a glanceUpdate frequency < 1/min (use periodic-refresh line chart); flashing content without reduced-motion supportCanvas/WebGL required. Buffer last 60–300s of data. Downsample older data on scrollCurrent pulse: #00FF00 (dark theme) or #0080FF (light theme). History: fading opacity. Grid: dark backgroundBPause/resume control required. Current value as large visible text KPI. Respect prefers-reduced-motion.Pause/resume button required; current value shown as large text KPI; prefers-reduced-motion: freeze animationSmoothed D3.js, CanvasJSReal-time + Pause + Zoom
2524Sentiment / Emotionsentiment, emotion, nlp, opinion, feeling, text-analysisWord Cloud with SentimentSentiment Arc, Radar ChartNLP output visualization; exploratory analysis of text corpus sentiment; frequency-weighted keyword overviewPrecise values matter (word size is inherently imprecise); screen-reader context; corpus < 50 items50–5000 terms optimal. Beyond 5000: apply top-N filtering before render. Avoid on mobilePositive: #22C55E. Negative: #EF4444. Neutral: #94A3B8. Word size maps to frequencyCWord clouds fail screen readers. Never use as sole output of NLP analysis. Always pair with list view.Sortable list view by frequency with sentiment label column; word cloud as supplementary onlyD3-cloud, Highcharts, NivoHover + Filter
2625Process Miningprocess, mining, variants, path, bottleneck, log, eventProcess Map / GraphDirected Acyclic Graph (DAG), Petri NetAnalyzing event logs to visualize actual process flows; identifying bottlenecks and deviations in ops/product funnelsNo event log data available; audience expects a static flowchart (use diagram tool); node count > 100 without pre-filtering<30 nodes: SVG; 30–100: Canvas; >100: apply variant filtering (top 80% of cases) before renderingHappy path: #10B981 thick line. Deviations: #F59E0B thin line. Bottleneck nodes: #EF4444 fillBComplex graphs are hard to navigate. Provide path summary text. Highlight top 3 bottlenecks as annotations.Path summary table (variant → frequency → avg duration); top 3 bottlenecks as text annotation panelReact-Flow, Cytoscape.js, RechartsDrag + Node-Click