Skip to content

Data Visualization

Flow-Like pages can present analytical results with NivoChart, PlotlyChart, Table, and supporting text components. Choose the visual from the question and data shape, then keep units, scope, and freshness visible.

ComponentBest fit
NivoChartCommon dashboard charts with a consistent A2UI configuration
PlotlyChartScientific, statistical, and more specialized interactive plots
TablePrecise values, record review, and drill-down

NivoChart supports chart types including bar, line, pie, radar, heatmap, scatter, funnel, treemap, sunburst, calendar, bump, area bump, circle packing, network, Sankey, stream, swarm plot, Voronoi, waffle, Marimekko, parallel coordinates, radial bar, box plot, bullet, and chord.

PlotlyChart exposes series, axis, data, layout, and configuration properties for Plotly-compatible views.

QuestionGood starting pointWatch for
How does a value change over time?Line chartMissing intervals, timezone, uneven sampling
How do categories compare?Sorted bar chartToo many categories, truncated labels
What contributes to a total?Stacked barParts that do not share a real whole
What is the distribution?Histogram or box plotBin choice, outliers, sample size
How do two measures relate?Scatter plotOverplotting, hidden segments
Where is intensity concentrated?HeatmapUnlabeled color scale
How does volume flow?Sankey or funnelImplied causality, inconsistent stages
Which exact records need action?TableUnbounded rows, missing sort or filters

Use pie or donut charts only for a small number of meaningful parts. Avoid three-dimensional effects that distort area or angle.

The core properties include:

  • chart type;
  • title;
  • data;
  • height;
  • colors;
  • animation;
  • legend visibility and position;
  • index field and value keys;
  • margins and axes;
  • chart-specific style properties;
  • an advanced Nivo configuration override.

The required data shape varies by chart type. Validate the final chart input instead of assuming one table shape works for every chart.

PlotlyChart supports:

  • chart type and title;
  • one or more named series;
  • x- and y-axis configuration;
  • data, layout, and config values;
  • width, height, responsive behavior, and legend placement.

Use Plotly when its trace and layout model better represents the analysis. Keep the page-level visual language consistent even when two libraries are used.

The A2UI chart node family includes:

NeedNode
Replace chart dataPush Data to Chart
Update chart layoutSet Chart Layout
Update visual styleSet Chart Style
Apply Nivo configurationSet Nivo Chart Config
Prepare chart data with an agentChart Data Agent

A typical dashboard workflow:

  1. reads validated filter values;
  2. queries and aggregates the source;
  3. checks row count and freshness;
  4. pushes structured results to the chart and detail table;
  5. updates title, scope, and status text;
  6. handles empty and error states explicitly.

Aggregate before sending data to the page. Thousands of raw event rows rarely make a more useful interactive chart than a purpose-built query result.

A chart should be supported by:

  • a title that states the question or measure;
  • visible units and time range;
  • the aggregation and important filters;
  • a freshness timestamp;
  • a small table or drill-down route for exact values;
  • a note for known exclusions or incomplete data.

When a dashboard uses governed KPIs, link the metric definition or repeat the essential formula and grain near the view.

  • Use a small, stable palette across a dashboard.
  • Reserve semantic colors for consistent meanings such as success, warning, and failure.
  • Check lines, labels, gridlines, selections, and tooltips in light and dark mode.
  • Do not encode status or category with color alone.
  • Use a sequential scale for ordered magnitude and a diverging scale only around a meaningful midpoint.
  • Keep sufficient contrast between adjacent series and the page background.
  • Start quantitative axes at zero when bar length represents magnitude, unless a clearly marked exception is necessary.
  • Label units once and format values consistently.
  • Use the app’s reporting timezone and state it when dates can be ambiguous.
  • Keep decimal precision appropriate to the decision.
  • Sort categories deliberately.
  • Avoid dual axes when separate aligned charts communicate the relationship more honestly.

Use interactions to answer a next question:

  • filter or highlight a related view;
  • navigate to a detail page;
  • reveal a tooltip with exact values;
  • select records for a bounded workflow action.

Preserve selected filters in route or query state when the view should be shareable. Keep destructive actions outside ordinary chart gestures.

  • Provide a textual summary of the main finding.
  • Offer a table or equivalent data view for exact values.
  • Use visible focus states and keyboard-accessible controls.
  • Keep labels readable at the smallest supported layout.
  • Avoid rapid or unnecessary animation.
  • Announce loading, empty, error, and refreshed states.
  • Every chart answers a specific question
  • Data shape matches the selected chart type
  • Units, filters, time range, and freshness are visible
  • Query output is aggregated and bounded
  • Exact values are available in a table or drill-down
  • Color works in light and dark mode and is not the only signal
  • Loading, empty, stale, and error states are distinct
  • Interactions lead to a useful next step
  • The main finding is available as text
SymptomCheck
Chart does not renderComponent ID, chart type, required data shape
Labels or series are missingIndex field, keys, series names, null values
Scale is misleadingUnits, aggregation, axis bounds, category order
Theme looks wrongExplicit colors, contrast, tooltip and grid styles
Page is slowRow count, number of series, aggregation, animation
Chart and table disagreeQuery versions, filters, refresh timing