Viet Tran a38d04c3d5
feat(search): overhaul relevance and curated design data
Overhaul BM25 relevance, reasoning and data-quality contracts; refresh UI styles and framework guidance; add resilient text, chip, badge and micro-interaction guidance; strengthen release, provenance and catalog refresh gates; update bilingual documentation.
2026-08-14 00:08:23 +07:00

23 KiB
Raw Blame History

1NoData TypeKeywordsBest Chart TypeSecondary OptionsWhen to UseWhen NOT to UseData Volume ThresholdColor GuidanceAccessibility GradeAccessibility RiskAccessibility NotesA11y FallbackLibrary RecommendationInteractive Level
21Trend Over Timetrend, time-series, line, growth, timeline, progress, accessible chart, keyboard accessible chartLine 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% opacitydeprecated: use Accessibility Riskrisk:lowUse solid, dashed, and dotted line styles plus direct series labels; never distinguish series by hue alone.Visible data table plus concise trend summary. Keyboard: focus reveals hover values; +/- buttons zoom; Reset restores the full range.Chart.js, Recharts, ApexChartsHover + Zoom
32Compare Categoriescompare, categories, bar, comparison, ranking, accessible chart, keyboard accessible chartBar 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; 2050: horizontal bar; >50: paginated tableEach bar: distinct color. Grouped: same hue family. Always sort descending by valuedeprecated: use Accessibility Riskrisk:lowUse direct category/value labels and group outlines or patterns; never encode category solely by bar color. Do not rely on color alone.Visible sortable data table plus concise comparison summary. Keyboard: focus reveals hover values; focusable headers with Enter/Space sort and aria-sort reports direction.Chart.js, Recharts, D3.jsHover + Sort
43Part-to-Wholepart-to-whole, pie, donut, percentage, proportion, share, accessible chart, keyboard accessible chartPie 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%56 max colors. Contrasting palette. Largest slice at 12 o'clock. Always label slices with %deprecated: use Accessibility Riskrisk:highPie charts do not inherently fail WCAG; unlabeled color-only slices are inaccessible. Use direct labels and patterns, with a non-pie fallback. Do not rely on color alone.Percentage data table and concise part-to-whole summary; offer a stacked bar view. Keyboard: focus reveals slice values; Enter/Space drills in; Back button returns.Chart.js, Recharts, D3.jsHover + Drill
54Correlation / Distributioncorrelation, distribution, scatter, relationship, pattern, cluster, accessible chart, keyboard accessible chartScatter 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; 5005000: Canvas at 0.60.8 opacity; >5000: hexbin or aggregate firstColor axis: gradient (blue → red). Bubble size: relative to 3rd variable. Opacity: 0.60.8 to show densitydeprecated: use Accessibility Riskrisk:conditionalCombine marker shapes with direct group labels; color may reinforce but must not be the only distinction.Visible data table plus correlation summary. Keyboard: focus reveals point values; labeled start/end range inputs replace brush dragging.D3.js, Plotly, RechartsHover + Brush
65Heatmap / Intensityheatmap, heat-map, intensity, density, matrix, calendar, accessible chart, keyboard accessible chartHeat 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 legenddeprecated: use Accessibility Riskrisk:conditionalPrint values or symbols in cells and use texture/labels in addition to the color scale. Do not rely on color alone.Grid data table plus intensity summary. Keyboard: focus reveals cell values; +/- buttons zoom; Reset restores the grid.D3.js, Plotly, ApexChartsHover + Zoom
76Geographic Datageographic, map, location, region, geo, spatial, choropleth, accessible chart, keyboard accessible chartChoropleth 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 breaksdeprecated: use Accessibility Riskrisk:conditionalLabel regions directly and pair fills with boundaries or patterns; location meaning cannot depend on color alone.Sortable region table plus geographic summary. Keyboard: arrow keys or labeled pan buttons move the map; +/- buttons zoom; Enter drills into a focused region; Back returns.D3.js, Mapbox, LeafletPan + Zoom + Drill
87Funnel / Flowfunnel, flow, conversion, drop-off, pipeline, stages, accessible chart, keyboard accessible chartFunnel 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 stages38 stages optimal; beyond 8 stages group minor steps into 'Other'Stages: single color gradient (start → end). Show conversion % between each stage. Highlight biggest dropdeprecated: use Accessibility Riskrisk:conditionalKeep stage names and values visible and distinguish stages with text and boundaries, not only a gradient. Do not rely on color alone.Linear stage table/list plus conversion summary. Keyboard: focus reveals stage values; Enter/Space drills in; Back returns.D3.js, Recharts, Custom SVGHover + Drill
98Performance vs Targetperformance, target, kpi, gauge, goal, threshold, progress, accessible chart, keyboard accessible chartGauge 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 differentiateddeprecated: use Accessibility Riskrisk:lowPlace the number and target text beside the gauge and label threshold zones; red/yellow/green alone is insufficient.Visible KPI/target text and a one-row data table plus status summary. Keyboard: focus reveals the same detail as hover.D3.js, ApexCharts, Custom SVGHover
109Time-Series Forecastforecast, prediction, confidence, band, projection, estimate, accessible chart, keyboard accessible chartLine 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 3090 days for readability; forecast horizon ≤ 30% of visible x-axis rangeActual: solid line #0080FF. Forecast: dashed #FF9500. Confidence band: 15% opacity fill same huedeprecated: use Accessibility Riskrisk:conditionalUse solid actual and dashed forecast lines, direct labels, and a named confidence range; hue alone is insufficient.Visible forecast table plus uncertainty summary. Keyboard: focus reveals hover values; buttons toggle actual/forecast; +/- buttons zoom; Reset restores range.Chart.js, ApexCharts, PlotlyHover + Toggle
1110Anomaly Detectionanomaly, outlier, spike, alert, detection, monitoring, deviation, accessible chart, keyboard accessible chartLine 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 zonedeprecated: use Accessibility Riskrisk:conditionalMark anomalies with a distinct shape and text annotation as well as color. Do not rely on color alone.Anomaly event list/table plus narrative alert summary. Keyboard: focus reveals point details; alerts are available in the persistent list without hover.D3.js, Plotly, ApexChartsHover + Alert
1211Hierarchical / Nested Datahierarchy, nested, treemap, parent, children, breakdown, drill, accessible chart, keyboard accessible chartTreemapSunburst, 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; 2001000: Canvas; >1000: paginate or pre-filter before renderingParent nodes: distinct hues. Children: lighter shades of same hue. White separator borders: 23pxdeprecated: use Accessibility Riskrisk:highLabel hierarchy nodes and use borders/patterns as well as hue; make the tree table the primary accessible view. Do not rely on color alone.Collapsible tree table plus hierarchy summary; treemap remains supplementary. Keyboard: focus reveals hover values; Enter/Space drills or expands; Back collapses/returns.D3.js, Recharts, ApexChartsHover + Drilldown
1312Flow / Process Dataflow, process, sankey, distribution, source, target, transfer, accessible chart, keyboard accessible chartSankey 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.40.6. Node labels always visibledeprecated: use Accessibility Riskrisk:conditionalLabel source, target, and value; use line style or node symbols in addition to gradient color. Do not rely on color alone.Source-to-target flow table plus flow summary. Keyboard: focus reveals hover values; Enter/Space drills into a node; Back returns.D3.js (d3-sankey), PlotlyHover + Drilldown
1413Cumulative Changeswaterfall, cumulative, variance, incremental, bridge, delta, accessible chart, keyboard accessible chartWaterfall 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 total412 bars optimal; beyond 12 aggregate minor items into a single 'Other' barIncreases: #4CAF50. Decreases: #F44336. Start total: #2196F3. End total: #0D47A1. Running total line: dasheddeprecated: use Accessibility Riskrisk:lowPair increase/decrease bars with signed values and directional icons, not red/green alone. Do not rely on color alone.Running-total table plus variance summary. Keyboard: focus reveals the same value as hover.ApexCharts, Highcharts, PlotlyHover
1514Multi-Variable Comparisonradar, spider, multi-variable, attributes, dimensions, comparison, accessible chart, keyboard accessible chartRadar / 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 charts23 datasets maximum per chart; 58 axes; beyond 8 axes switch to parallel coordinatesSingle dataset: #0080FF at 20% fill. Multiple: distinct hues with 30% fill. Border: full opacitydeprecated: use Accessibility Riskrisk:conditionalUse line styles, point shapes, and direct series labels in addition to color. Do not rely on color alone.Raw data table and grouped-bar alternative plus comparison summary. Keyboard: focus reveals values; buttons toggle series.Chart.js, Recharts, ApexChartsHover + Toggle
1615Stock / Trading OHLCstock, trading, ohlc, candlestick, finance, price, volume, accessible chart, keyboard accessible chartCandlestick 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 styledeprecated: use Accessibility Riskrisk:conditionalUse filled versus hollow candles and OHLC text values; bullish/bearish meaning cannot depend on color. Do not rely on color alone.Sortable OHLC table plus daily-change summary. Keyboard: focus reveals candle values; +/- buttons zoom; Reset restores range; live updates do not steal focus.Lightweight Charts (TradingView), ApexChartsReal-time + Hover + Zoom
1716Relationship / Connection Datanetwork, graph, nodes, edges, connections, relationships, force, accessible chart, keyboard accessible chartNetwork 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; 101500: Canvas; >500: must apply clustering/LOD before renderingNode types: categorical colors. Edges: #90A4AE at 60% opacity. Highlight path: #F59E0Bdeprecated: use Accessibility Riskrisk:highUse labeled node types, shapes, and edge styles in addition to color; the adjacency view is the accessible source of truth. Do not rely on color alone.Adjacency list/table and relationship summary; tree view when applicable. Keyboard: focus reveals node details; Enter drills; Move up/down/left/right buttons replace drag.D3.js (d3-force), Vis.js, Cytoscape.jsDrilldown + Hover + Drag
1817Distribution / Statisticaldistribution, statistical, spread, median, outlier, quartile, boxplot, accessible chart, keyboard accessible chartBox 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: #F44336deprecated: use Accessibility Riskrisk:lowLabel median, quartiles, whiskers, and outliers directly; do not use color alone for statistical roles.Statistics table plus distribution summary. Keyboard: focus reveals the same statistics as hover.Plotly, D3.js, Chart.js (plugin)Hover
1918Performance vs Target (Compact)bullet, compact, kpi, dashboard, target, benchmark, range, accessible chart, keyboard accessible chartBullet 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 310 bullet charts in a grid; scales to any count efficientlyQualitative ranges: #FFCDD2 / #FFF9C4 / #C8E6C9 (bad/ok/good). Performance bar: #1976D2. Target: black 3px markerdeprecated: use Accessibility Riskrisk:lowLabel every qualitative range and target with text; color is supplementary.Visible KPI/target table plus status summary. Keyboard: focus reveals the same detail as hover.D3.js, Plotly, Custom SVGHover
2019Proportional / Percentagewaffle, percentage, proportion, progress, filled, grid, accessible chart, keyboard accessible chartWaffle 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% bar35 categories max. 23px gap between cells. Each category a distinct accessible color pairdeprecated: use Accessibility Riskrisk:lowLabel each category and percentage and add patterns or symbols; filled-cell color alone is insufficient.Percentage table/list plus part-to-whole summary. Keyboard: focus reveals each cell value.D3.js, React-Waffle, Custom CSS GridHover
2120Hierarchical Proportionalsunburst, hierarchy, nested, proportion, radial, circle, accessible chart, keyboard accessible chartSunburst 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; 100500: Canvas; >500: filter to top N before renderingCenter to outer: darker to lighter hue. Each level 1520% lighter. Contrasting border between sectorsdeprecated: use Accessibility Riskrisk:highLabel hierarchy levels and segments and use boundaries/patterns as well as hue; the indented list is primary. Do not rely on color alone.Collapsible indented list/table plus hierarchy summary and breadcrumbs. Keyboard: Enter/Space drills or expands; Back button returns; focus reveals hover detail.D3.js (d3-hierarchy), Recharts, ApexChartsDrilldown + Hover
2221Root Cause Analysisroot cause, decomposition, tree, hierarchy, drill-down, ai-split, attribution, accessible chart, keyboard accessible chartDecomposition 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: #94A3B8deprecated: use Accessibility Riskrisk:lowName each node and contribution and use shapes/connector styles in addition to color. Do not rely on color alone.Expandable tree table plus root-cause summary. Keyboard: Enter/Space drills and expands; Back collapses; dedicated expand/collapse buttons expose the same operations.Power BI (native), React-Flow, Custom D3.jsDrill + Expand
23223D Spatial Data3d, spatial, immersive, terrain, molecular, volumetric, point-cloud, accessible chart, keyboard accessible chart3D 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.4deprecated: use Accessibility Riskrisk:highUse labels, shapes, and depth-independent cues; color and 3D position cannot be the only carriers of meaning.Mandatory 2D projection, data table, and spatial summary. Keyboard: rotate/pan buttons and +/- zoom controls replace pointer/VR manipulation; Reset returns the camera.Three.js, Deck.gl, Plotly 3DRotate + Zoom + VR
2423Real-Time Streamingstreaming, real-time, ticker, live, velocity, pulse, monitoring, accessible chart, keyboard accessible chartStreaming 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 60300s of data. Downsample older data on scrollCurrent pulse: #00FF00 (dark theme) or #0080FF (light theme). History: fading opacity. Grid: dark backgrounddeprecated: use Accessibility Riskrisk:conditionalShow the current value and status text and use line styles or markers in addition to color. Do not rely on color alone.Streaming data table plus current-value/trend summary. Keyboard: Pause/Resume button controls updates; focus reveals values; +/- buttons zoom; Reset restores range.Smoothed D3.js, CanvasJSReal-time + Pause + Zoom
2524Sentiment / Emotionsentiment, emotion, nlp, opinion, feeling, text-analysis, accessible chart, keyboard accessible chartWord 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 items505000 terms optimal. Beyond 5000: apply top-N filtering before render. Avoid on mobilePositive: #22C55E. Negative: #EF4444. Neutral: #94A3B8. Word size maps to frequencydeprecated: use Accessibility Riskrisk:highExpose every term, count, and sentiment as text; size and color are supplementary only.Sortable term table/list plus sentiment summary; word cloud is supplementary. Keyboard: focus reveals word details; labeled controls filter with Space/Enter.D3-cloud, Highcharts, NivoHover + Filter
2625Process Miningprocess, mining, variants, path, bottleneck, log, event, accessible chart, keyboard accessible chartProcess 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; 30100: Canvas; >100: apply variant filtering (top 80% of cases) before renderingHappy path: #10B981 thick line. Deviations: #F59E0B thin line. Bottleneck nodes: #EF4444 filldeprecated: use Accessibility Riskrisk:conditionalLabel nodes and paths and use shapes/line styles in addition to color; bottlenecks require text annotations. Do not rely on color alone.Path summary table plus bottleneck narrative. Keyboard: Move buttons replace drag; focus reveals node details; Enter activates a node; Back returns.React-Flow, Cytoscape.js, RechartsDrag + Node-Click