Line Chart dataviz-001
Plots data points connected by lines to show trends over continuous intervals (time series). The default choice for showing change over time. Use when the x-axis is ordered (dates, sequential steps).
43 patterns in this category — each with its illustration, what it is, and the fields that matter when you build or review one. Part of the UX pattern catalogue; the raw, agent-readable version is ux-pattern-catalogue/dataviz-patterns.json.
Plots data points connected by lines to show trends over continuous intervals (time series). The default choice for showing change over time. Use when the x-axis is ordered (dates, sequential steps).
Uses rectangular bars to compare discrete categories. Research shows bar charts are the easiest chart type for users to interpret accurately (NN/G). Vertical for categories, horizontal when labels are long.
A line chart with the area below filled, emphasizing volume or cumulative totals. Stacked areas show part-to-whole over time. Use when the magnitude matters, not just the trend.
Shows part-to-whole relationships as angular slices. Donut variant adds a center metric. Limit to 5-6 slices maximum — research shows users struggle to compare similar angles (NN/G). Always sort by size.
Plots individual data points on two axes to reveal correlations, clusters, and outliers. Use when exploring relationships between two quantitative variables. NN/G notes position is a preattentive variable — outliers are spotted instantly.
Uses color intensity on a grid to show magnitude across two categorical dimensions. Common for time-of-day activity, correlation matrices, and geographic density. The eye is drawn to hotspots instantly.
A tiny, word-sized chart (typically a line or bar) embedded inline with text or inside a table cell or KPI card. Invented by Edward Tufte to show trends without axis labels. Shows direction, not precise values.
A semicircular or circular meter showing a single value against a scale. Best for KPIs with known min/max (CPU usage, goal progress, health scores). Limit to one per card — multiple gauges waste space.
Shows progressive reduction through sequential stages (conversion funnels, sales pipelines). Each stage is a trapezoid narrower than the previous. Shows both absolute counts and conversion rates between steps.
Nested rectangles sized by a quantitative value, showing hierarchical part-to-whole. Good for file system usage, budget allocation, or portfolio composition. Area encoding is less precise than bar length but shows hierarchy well.
Flow diagram where link width is proportional to flow quantity. Shows how values distribute from source to destination (user journeys, budget flows, energy transfers). Reveals leakage and dominant paths.
A single large number with label, trend indicator, and optional sparkline. The most common dashboard element. Shows current value, comparison to previous period, and directional arrow. Place the 3-5 most critical KPIs at the top of any dashboard.
Arrange charts and KPIs in a responsive grid with consistent card sizing. Place the most important metrics in the top-left (F-pattern scanning). Limit to 5-9 visible widgets to prevent cognitive overload (NN/G).
A sticky bar above all dashboard widgets containing date range picker, comparison toggle, and global filters. All charts respond to these shared controls. Prevents per-chart filter confusion.
Each chart wrapped in a card with: title, subtitle/description, optional controls (time range tabs, export), and the chart below. Consistent card structure across all dashboard widgets.
Organize dashboard sections into tabs (Overview, Revenue, Users, Performance) to manage complexity without scrolling. The Overview tab shows the top 5-7 KPIs; detail tabs show full charts.
Side-by-side or overlay chart layout for comparing two periods, segments, or scenarios. "This period vs last period" is the most common comparison. Overlay on same axes when scales match; split when they differ.
What to show when a dashboard has no data yet — because the user is new, the date range has no activity, or the data source is not connected. Never show blank chart containers.
A floating card showing precise values when hovering over a data point or bar. The primary way users read exact values from charts. Show all series values at the hovered x-position for line/area charts.
A vertical (or cross-shaped) reference line following the cursor across the chart, snapping to the nearest data point. Helps users track position and compare values across multiple line series.
A draggable range selector below the main chart for zooming into a time window. Shows a miniature overview of the full dataset with handles to select a sub-range. Essential for large time series.
Clicking a chart element navigates to a more detailed view. Click a bar to see its breakdown, click a time period to zoom in. Progressive disclosure for complex data — overview first, details on demand (Shneiderman's mantra).
A labeled key mapping colors/patterns to data series. Place below or to the right of the chart. Interactive legends that toggle series visibility are highly valued by users for multi-series charts.
Labels, arrows, or highlighted regions on a chart marking notable events (product launches, outages, promotions). Give context to data anomalies that users would otherwise investigate manually.
Allow users to download chart data as CSV/Excel or the chart image as PNG/SVG. Power users need raw data for their own analysis. Place export button in the chart card header.
Every chart must have an equivalent data table that screen reader users can navigate. This is the single most important accessibility requirement for data visualization. Toggle between chart and table view.
Use color palettes distinguishable by users with protanopia, deuteranopia, and tritanopia (8% of men, 0.5% of women). Never rely on red/green distinction alone. Test with a color blindness simulator.
The outermost chart wrapper needs role="img" with an aria-label summarizing what the chart shows. This is the first thing a screen reader announces — it should convey the chart type, subject, and key insight.
Make individual data points focusable and navigable with arrow keys. On focus, show the tooltip with the point's value. Essential for users who cannot use a mouse to hover over chart elements.
A toggle or automatic detection that increases chart contrast: thicker lines, larger labels, stronger fill colors, and pattern fills replacing solid colors. Essential for low-vision users.
Represent data as sound — pitch maps to value, left-to-right panning maps to time. An experimental but powerful alternative for blind users to perceive trends, outliers, and patterns in charts without vision.
A chart that receives new data points via WebSocket or SSE and appends them in real-time. Common for monitoring dashboards (server metrics, stock prices, IoT sensors). New points slide in from the right.
Horizontal reference lines on charts indicating warning and critical thresholds. When values cross a threshold, visually highlight the violation with color change and optional animation. Essential for monitoring dashboards.
Dashboard data refreshes on a timer (every 30s, 1m, 5m) with a visible countdown or "last updated" timestamp. Users must know when data is stale. Provide manual refresh and auto-refresh toggle.
Buffer incoming data points and render in batches to prevent jank from high-frequency updates. If data arrives at 100 Hz, batch into 1-2 Hz visual updates. Preserves all data for analysis while keeping the UI smooth.
Quick-select buttons for common time ranges: "1h", "6h", "24h", "7d", "30d", "Custom". The primary navigation for time-series dashboards. Active range highlighted. Affects all charts on the dashboard.
Tiny inline charts inside data table cells showing the trend for each row's metric. Combines tabular precision with visual trend context. Common in financial dashboards, server monitoring, and analytics tables.
Charts must resize fluidly with their container. Use a responsive wrapper that recalculates dimensions on resize. Never set fixed pixel widths on charts — they will overflow or leave whitespace on different screens.
Rotate x-axis labels 45 or 90 degrees when they overlap at smaller widths. The fallback for long category labels in bar and line charts. Prefer horizontal labels when space permits — rotated text is harder to read.
On mobile, reduce chart complexity: fewer data points, simplified axes, larger touch targets, horizontal scroll for wide charts. Mobile users need trends, not precision — prioritize the story over the detail.
Show a placeholder skeleton matching the chart shape while data loads. Prevents layout shift and communicates that content is coming. Better than a spinner because it preserves the spatial context.
On desktop, show multiple charts side by side in a grid. On mobile, either stack vertically (for few charts) or use a horizontal scroll carousel (for many charts). Prevents tiny, unreadable charts on narrow screens.
Charts rendered for @media print: high contrast, no interactive elements, visible data labels, expanded legends, and appropriate sizing. Users print dashboards for meetings and reports.