Radar Chart

Compares a few items across several measures at once, one spoke per measure from a shared zero.
Beta
Web
iOS
Android
@advui/charts
Source

Two shapes

Coverage by sectorShare of people in need reached, 2026
Kachin
Rakhine

Installation

pnpm
pnpm add @advui/charts
npm
npm install @advui/charts

Usage

import { RadarChart } from '@advui/charts'

<RadarChart
  title="Coverage by sector"
  data={[{ sector: 'Health', kachin: 82 }, { sector: 'WASH', kachin: 71 }, { sector: 'Food', kachin: 74 }]}
  index="sector"
  series={[{ key: 'kachin', label: 'Kachin' }]}
  max={100}
/>

Examples

Round grid

Team skillsAverage self-rating out of 5

API reference

RadarChart

PropTypeDefaultDescription
title requiredstring—Names the chart: its heading and accessible name.
descriptionstring—Muted line under the title (units, period).
data requiredT[]—One object per spoke, three or more. Its type `T` (an interface works) is inferred, and `index` and `series` must name its fields.
index requiredkeyof T & string—Field holding each spoke’s name.
indexLabelstring`index`Heading of the spoke column in the table view.
series required{ key: keyof T & string; label: string }[]—Numeric fields to draw, one shape each. Colors follow this order (`chart1`…`chart8`); more than three shapes get hard to read. A missing value leaves its spoke out of that shape.
maxnumber—The value at the edge, such as 100 for percentages. By default the largest value, rounded up. Negative values sit at the center and larger ones at the edge.
grid'polygon' | 'circle''polygon'Shape of the rings behind the data.
valueFormatter(value: number) => string—Formats tooltip and table values. Ring labels are compact (1.2K).
heightnumber300Pixels, including the spoke labels.
widthnumber—Fixed width. By default it fills its container.
surfaceColorTokens'background'The color behind the chart, for the ring around markers. Use `card` inside a Card.
labelsPartial<ChartLabels>—"Show table", "Hide table" and the keyboard hint, for translation.

Accessibility

  • The chart is a figure named by its title. The plot is one focusable image whose name gives the title, description and a hint; the arrow keys (Home / End too) step through the spokes clockwise from the top, and a polite live region reads every series’ value there.
  • Every chart has a table view ("Show table") with the same values, so nothing depends on seeing colors or hovering.
  • Identity never relies on color alone: two or more series get a legend, and the tooltip names each value.
  • Colors come from the chart1…chart8 theme keys, a palette checked for color-blind separation in light and dark mode.
Keyboard interactions
KeyAction
TabFocuses the plot, then the table button.
Arrow keys / Home / EndMove between spokes and read them.
EscapeHides the tooltip.

Responsive behavior

The web fits the smaller of the width and height, leaving room for the spoke labels; labels longer than 96px are cut.

Platform notes

Web
SVG in the page. Hover near a spoke to show its tooltip; the arrow keys work once the plot has focus.
iOS
Drawn with react-native-svg. Tap near a spoke to show its tooltip. VoiceOver and TalkBack read the title and description, without the arrow-key hint; Show table lists every value.
Android
Same as iOS.
Since v0.14.0Last updated Nov 2, 2026Edit this page on GitHub