Charts - Radar

Multivariate data on radial axes. Each series renders a polygon across shared spoke labels, suitable for comparing profiles and performance across dimensions.

#Usage

import { ChartAnnotation, ChartCanvas, ChartCaption, ChartExportMenu, ChartHover, ChartItem, ChartLegend, ChartRadar, ChartReferenceBand, ChartReferenceLine, ChartStacked, ChartSvg, ChartTitle, ChartTooltip, ChartYAxis } from '@primeui/vue-chart';
<ChartSvg>
    <ChartRadar :data="data" category-x-field="categoryXField" value-y-field="valueYField" />
</ChartSvg>

Radar charts compare profiles across multiple dimensions on radial axes. Each spoke maps a category and each ring marks a value level. Place multiple ChartRadar components as siblings to overlay and compare datasets.

#Basic

Set categoryXField to map spoke labels and valueYField to map the radial value for each axis.

Loading Demo...

#Multi-Series

Place multiple ChartRadar components as siblings to overlay separate datasets. Each series renders its own polygon. Overlay multiple series to compare profiles side by side.

Loading Demo...

#Colors

Set color to apply a color to the polygon stroke and its area fill. Supports hex, RGB, and CSS color values.

Loading Demo...

#Gradient Color

Pass a radial gradient object to color when the fill needs softer emphasis than a solid stroke. Keep the stops controlled so the gradient supports comparison instead of turning the radar into decoration.

Loading Demo...

#Fill Opacity

Set fillOpacity to control the polygon area fill. 0 draws only the stroke with no fill; 0.2 is the default semi-transparent fill. Higher values create a more solid polygon, which works well when series don't overlap.

Loading Demo...

#Curve

Set curve="smooth" to use Bezier interpolation between spoke vertices instead of straight polygon edges. Produces a softer shape. Use this when the angular polygon edges feel too harsh.

Loading Demo...

#Markers

Set showMarkers to display point markers at each spoke vertex. Set markerSize to control the radius. Mixing marker sizes across series creates visual hierarchy without changing stroke weights.

Loading Demo...

#Custom Markers

Set renderMarker to replace built-in markers with fully custom content. In SVG mode return a VNode centered at the origin; the chart handles translation to each vertex position. In Canvas mode the context is pre-translated to the vertex; draw at origin and return null.

Loading Demo...

#Line Styling

Set lineStrokeWidth to control polygon stroke thickness. Set lineStyle to dashed or dotted for a preset dash pattern, or use lineDash to define a custom pattern with [dashLength, gapLength] for distinguishing series when color alone is not enough.

Loading Demo...

#Grid Shape

Set gridShape="circle" on ChartYAxis to render smooth concentric circles instead of the default polygon grid. Circle grids produce a softer appearance. Use this when the polygon grid feels too technical.

Loading Demo...

#Grid Styling

Grid styling lives on ChartYAxis. Set tickCount to control the number of concentric levels. Visibility follows the same model as cartesian axes: showLine="false" hides the spoke lines, gridLines="false" hides the concentric rings, and showLabels="false" hides the value labels. Use gridColor, gridStrokeWidth, and gridOpacity to adjust the grid line appearance, and set gridStyle to dashed or dotted for non-solid grid lines.

Loading Demo...

#Stacked

Wrap multiple ChartRadar components inside ChartStacked to render concentric rings instead of overlapping polygons. Each series fills the band above the previous one, useful for showing cumulative contributions rather than direct comparison.

Loading Demo...

#Declarative

Define data points inline using ChartItem children instead of a data array. Each ChartItem accepts category-x, value-y, and color.

Loading Demo...

#Title & Caption

Add ChartTitle to display a title above the chart and ChartCaption for a descriptive line beneath it. Both reduce the chart area height together.

Loading Demo...

For full configuration see Title & Caption.

#Hover

Add ChartHover to apply visual feedback on hover. Set brightness to lighten the hovered series, and set dimOpacity below 1 only when you want the rest to fade. Hovering operates at the dataset level. The entire polygon highlights, not individual vertices. Vertex markers enlarge to markerSize × 1.3 on hover.

Loading Demo...

For full configuration see Hover.

#Tooltip

Add ChartTooltip to show data details on hover. The tooltip displays the spoke label, value, and series name for the nearest vertex.

Loading Demo...

For full configuration see Tooltip.

#Legend

Add ChartLegend to display an interactive legend. Each ChartRadar series appears as a separate entry. Click any item to toggle that series.

Loading Demo...

For full configuration see Legend.

#Axes

Bind per-category radial scales using category on ChartYAxis. Each axis applies to its matching spoke (category) and maintains its own domain, useful when comparing metrics with different ranges within the same radar chart.

Loading Demo...

#Annotation

Use ChartAnnotation to render custom content overlaid on the chart area. The render callback receives chartArea, center, xScale, yScale, textColor, and ctx (Canvas mode only). Use center to position content at the chart's center. xScale and yScale are null for radar charts. In SVG mode return a VNode. In Canvas mode draw to ctx and return null.

Loading Demo...

For full configuration see Annotation.

#Reference Bands & Lines

Use ChartReferenceBand to shade a concentric annular zone between two radial values (y1 / y2). Use ChartReferenceLine to draw a dashed ring at a specific value (y). Both components work on radar with the same props as on cartesian charts. The values are mapped to the same scale as the chart data.

Loading Demo...

For full configuration see Reference Band and Reference Line.

#Animation

Pass the chart-root animation prop (<ChartSvg> / <ChartCanvas>) to control entrance and update transitions. Spoke points expand outward from the center on entrance and interpolate to new positions on data updates.

For full configuration see Animation.

#Export

Add ChartExportMenu to let users download the chart as PNG, SVG, or PDF.

See Export for format options and programmatic export.

#Responsive

See Responsive for container sizing, aspect ratio, and breakpoint configuration.

#Accessibility

See Accessibility for ARIA labels, keyboard navigation, and screen reader support.

#API

#ChartRadar

Visual styling props with type accessor → R accept a static value, a per-vertex array, a field name (keyof T), or a callback (ctx: ItemContext<T>) => R | undefined. Color-family arrays cycle modulo length; other accessor arrays clip and fall back to the series default.

PropTypeDefaultDescription
dataT[]-Data array. Mutually exclusive with ChartItem children
categoryXFieldaccessor → string'category'Spoke label field
valueYFieldaccessor → number'value'Radial value field
colorFillValuedefault palettePolygon stroke and fill color (series-level, not a FieldAccessor). A radar polygon is a single closed shape; per-vertex coloring doesn't fit the geometry. For per-vertex marker styling use pointBackgroundColor / pointBorderColor
namestring-Series name, used in legend and tooltip
keyFieldstring-Field name for stable item identity, used for animation matching when data is reordered
idstringautoUnique dataset identifier
ordernumberautoStacking order when inside ChartStacked. 0 = innermost
fillOpacity0–10.2Polygon area fill opacity. 0 = stroke only
lineStrokeWidthnumber2Polygon stroke thickness (px)
lineStyle'solid' | 'dashed' | 'dotted''solid'Polygon stroke dash style
lineDashnumber[]-Dash pattern for the polygon stroke [dashLength, gapLength]
curve'linear' | 'smooth''linear'linear = straight polygon edges. smooth = Bezier curves between vertices
showMarkersbooleantrueDisplay point markers at spoke vertices
markerSizeaccessor → number4Vertex marker radius (px). Per-vertex via array/callback
markerShapeaccessor → string'circle'Built-in enum ('circle' | 'square' | 'triangle' | 'cross' | 'star') or any custom SVG path d string
pointRotationaccessor → number0Marker rotation in degrees (0 = upright). Per-vertex via array/callback
pointBackgroundColoraccessor → FillValueseries colorMarker fill color. Per-vertex via array/callback
pointBorderColoraccessor → FillValue-Marker border stroke color
pointBorderStrokeWidthaccessor → number-Marker border stroke width (px)
pointBorderDashaccessor → number[]-Marker border dash pattern
pointBorderDashOffsetaccessor → number0Marker border dash phase offset
pointBorderJoinStyle'round' | 'bevel' | 'miter''miter'Marker border path join style
borderColoraccessor → FillValue-Polygon halo border color
borderStrokeWidthaccessor → number-Polygon halo border width (px)
borderDashaccessor → number[]-Polygon halo border dash pattern
borderDashOffsetaccessor → number0Polygon halo border dash phase offset
borderJoinStyle'round' | 'bevel' | 'miter''round'Polygon halo border join style
hoverColoraccessor → FillValue-Per-vertex fill color on hover. Short-circuits the global ChartHover.brightness cascade
hoverBorderColoraccessor → FillValue-Per-vertex border color on hover
yAxisIdstring-Binds this series to a named ChartYAxis for independent per-series scaling. When omitted, the series contributes to the shared auto-computed domain
renderMarker(context: PointRenderContext) => unknown-Custom vertex marker renderer. SVG: return a VNode centered at origin. Canvas: draw to ctx and return null

#ChartYAxis (radial grid)

The concentric grid is configured on ChartYAxis, not on ChartRadar. Add a ChartYAxis to style it. The number of rings follows the axis tickCount.

PropTypeDefaultDescription
gridShape'polygon' | 'circle''polygon'Concentric grid shape: polygon (spider web) or smooth circles
tickCountnumberautoNumber of concentric grid levels (rings)
showLinebooleantrueShow the spoke lines (center to outer)
gridLinesbooleantrueShow the concentric grid rings
showLabelsbooleantrueShow the value labels
gridColorstringthemeGrid line color
gridStrokeWidthnumber0.5Grid line thickness (px)
gridOpacity0–10.6Grid line opacity
gridStyle'solid' | 'dashed' | 'dotted''solid'Grid line dash style

See Axes for the full axis prop reference.

#ItemContext

Passed to every accessor → R callback. Return undefined to fall back to the series-level default for that vertex.

FieldTypeDescription
datumTOriginal data row
valuenumber | nullResolved radial value
indexnumberVertex position within the dataset
seriesIndexnumberOrder of this series within the chart
seriesIdstringDataset id
categorystring?Resolved spoke label
sizenumber?Current marker pixel size, populated for marker accessors

#ChartStacked

Wrap ChartRadar children inside ChartStacked to render concentric rings instead of overlapping polygons.

PropTypeDefaultDescription
gapnumber0Pixel gap between concentric rings
idstringautoStack group identifier

#ChartItem

Use ChartItem as children of ChartRadar instead of a data array for inline data definitions.

PropTypeDescription
category-xstringSpoke label
value-ynumberRadial value
colorstringOverride color for this point

#PointRenderContext

Passed to the renderMarker callback for each vertex.

FieldTypeDescription
xnumberPixel X coordinate of the vertex
ynumberPixel Y coordinate of the vertex
indexnumberData index
valuenumber | nullRaw data value
categorystringSpoke label
dataTOriginal data item from the data array
colorstringResolved series color
sizenumberCurrent marker radius in pixels, larger when hovered
isHoveredbooleanWhether this point is currently hovered
opacitynumberComputed opacity from hover dim effects (0–1). Apply to the custom marker to respect dimOpacity
ctxCanvasRenderingContext2D | undefinedCanvas context, present only in Canvas mode
drawImagefunction | undefinedDraw an image from a URL at a position relative to origin. Handles loading and caching automatically. Canvas mode only
animatefunction | undefinedRegister a continuous animation on a numeric property, drives the canvas RAF loop while active. Canvas mode only