tutorial · 2026-02-21

Making a Radar (Spider) Chart for Character Stats in UE5

Turn six attributes into one readable shape — and compare two builds at a glance — using Fast Chart Widgets.

Fast Chart Widgets
Featured on Fab Fast Chart Widgets Drop blueprintable graphs and charts straight into your UI.
$25.99 Get on Fab →
8
Built-in chart types (Radar included)
34
Pre-configured chart templates
6
Marketplace template categories

Why a radar chart is the right shape for attribute comparisons

Character sheets live and die on legibility. A row of bars showing Strength, Agility, Intellect, Vitality, Luck and Charisma tells you the numbers, but never the shape of a build at a glance — and shape is what players read when they decide whether a character is a glass cannon or a well-rounded all-rounder. A radar chart, sometimes called a spider chart, plots each attribute on its own spoke radiating from a centre, then joins the values into a polygon: a tall narrow spike means a specialist, a fat even blob means a generalist.

If you are searching for how to make an Unreal Engine radar (spider) chart for character stats, you do not want to hand-draw polygons in Slate or wrestle a HUD material to do it. Radar is one of the eight built-in chart types in Fast Chart Widgets (alongside Line, Area, Scatter, Bar, Pie, Donut and Polar Area), so the plumbing — axes, spoke geometry, the filled polygon, the labels — is already done. You feed it values and labels; it draws the shape.

Radar also wins for stats screens on comparison. Overlay a second polygon — your current loadout against a target build, or player A against player B — and the difference reads instantly as two interlocking shapes, where two bar groups would force the eye to hop between pairs.

Getting a chart onto your widget

Install Fast Chart Widgets into your project's Plugins folder, enable it and restart the editor. The radar chart is the runtime UMG widget UFastChartWidget, which derives from UUserWidget and draws everything in Slate during paint — no image assets to manage and nothing to wire into a material.

1. Create or open the UMG Widget Blueprint that hosts your character sheet and drop a 'Fast Chart Widget' onto the canvas. Give it a roughly square size so the spokes stay evenly spaced.

2. The fastest configuration route is the template button: the editor module adds a 'Chart Template Marketplace' / 'Add Chart' button to the Widget Blueprint toolbar that drops in a pre-styled chart with one click. For a stats screen you usually want precise control, so this tutorial drives the chart from the Event Graph with the builder API instead.

3. In the Event Graph, get a reference to your Fast Chart Widget and call 'Create Chart Builder' to obtain a UFastChartChartBuilder. The builder and its series are retained on the widget (in ActiveChartBuilders), so you do not have to promote them to variables to survive garbage collection — a common gotcha handled for you.

CreateRadarChart, axis labels and your first polygon

With a builder in hand, call 'Create Radar Chart' on it. This is the radar-specific entry point alongside the builder's siblings (CreateLineChart, CreateBarChart, CreatePieChart and the rest), and it takes an FFastRadarChartOptions struct. The two fields that matter most for a character sheet are AxisLabels and bAutoNormalize.

AxisLabels is the array of names for your spokes, one per attribute, in order — for a classic RPG sheet you might pass 'Strength', 'Agility', 'Intellect', 'Vitality', 'Luck', 'Charisma'. These are the text labels printed at the tip of each spoke, so the count of labels defines how many axes the polygon has. Set them up front and your radar already reads as a stats wheel before you have pushed a single value.

Next, create a series for the build you want to plot. Call 'Create Series' on the chart, then add one value per axis with the series API — 'Add Data Point' for raw entries, 'Add Data Point Labeled' to tie a value to a named category, or the 'Add Bulk Data Points' variants to push a whole stat block from an array. Feed the attribute values in the same order as your AxisLabels and the polygon snaps into shape.

The same configuration is also exposed on the widget directly: the radar's axis names sit on the RadarAxisLabels property, so a designer can rename spokes in the Details panel without touching Blueprint.

Auto-normalise so unlike stats share one ring

Real character stats rarely live on the same scale. Vitality might be a few hundred hit points while Luck is a single digit and a percentage-based crit chance never exceeds 100. Plot those raw and the polygon collapses — the big number pins one spoke to the outer ring and crushes every small stat into a dot at the centre. The chart is technically correct and completely unreadable.

That is what auto-normalise solves. Setting bAutoNormalize on the FFastRadarChartOptions (or toggling bRadarAutoNormalize on the widget) rescales each axis independently so every attribute is read relative to its own maximum rather than against an absolute shared range. A maxed Luck and a maxed Vitality both reach the outer ring; a half-filled stat sits halfway out on its own spoke. The silhouette now communicates how complete each attribute is, which is exactly what a build comparison wants to show.

Turn auto-normalise off when — and only when — all your axes genuinely share one meaningful scale, for example six attributes that are all rated 0 to 10 by design. In that case absolute positioning is the more honest read, because a value of 7 on one spoke really is comparable to a 7 on another. For mixed-unit RPG stats, leave it on.

Fill opacity, and overlaying two builds

A filled polygon reads faster than an outline, but a solid fill hides anything behind it. The RadarFillOpacity property controls how transparent the polygon's interior is, and it is the key setting once you start overlaying builds. Drop the opacity low and a second polygon laid over the first stays visible through it, so the two shapes overlap into a darker region exactly where the builds agree — an instant visual diff.

To build that comparison, add a second series to the same radar chart, feed it the second character's values against the identical AxisLabels, and style the two series with contrasting colours via 'Update Series Style'. The widget's multi-dataset management — RegisterDataSet, SetDataSetVisible and related calls — lets you toggle each build on and off at runtime, so a 'compare' button can fade the rival polygon in and out without rebuilding the chart.

The rest of the plugin's styling carries over to radar — legend placement, per-axis titles, theming — but a character sheet rarely needs much of it: sensible AxisLabels, auto-normalise on, a low fill opacity and two contrasting series is a complete, shippable stats comparison.

Next step: if your stat blocks come from a backend or a remote balance table rather than being baked into the project, pair Fast Chart Widgets with EasyHTTP to pull the numbers in at Begin Play and feed them straight into 'Add Bulk Data Points' — the chart never needs to know where the data came from.

Radar setup at a glance

SettingWhere it livesWhat it does
AxisLabels / RadarAxisLabelsFFastRadarChartOptions, or the widget propertyNames each spoke; the count defines how many axes the polygon has
bAutoNormalize / bRadarAutoNormalizeFFastRadarChartOptions, or the widget propertyRescales each axis to its own max so unlike-scaled stats share one ring
RadarFillOpacityWidget propertyTransparency of the filled polygon; lower values let overlaid builds show through
CreateRadarChartUFastChartChartBuilderBuilder entry point that creates the radar chart from FFastRadarChartOptions

The settings you actually touch for a character-stats radar, and where each one lives.

Radar vs grouped bars for a stats screen

NeedRadar (spider)Grouped bar
Read the overall shape of a build at a glanceStrong — the silhouette is the whole pointWeak — bars show values, not shape
Compare two builds in one figureStrong — overlay two semi-transparent polygonsWorkable but the eye must hop between pairs
Show many attributes (6+) compactlyStrong — spokes stay compact as count growsGets wide and busy as categories grow
Read an exact numeric valueWeaker — position on a spoke is approximateStrong — bar length maps cleanly to a number

Both are built-in chart types; the choice is about what you want the player to read.

FAQ

How do I make an Unreal Engine radar (spider) chart for character stats?

Add a Fast Chart Widget to your UMG character sheet, call 'Create Chart Builder' then 'Create Radar Chart' with an FFastRadarChartOptions that has your attribute names in AxisLabels, create a series, and push one value per axis with 'Add Data Point'. Radar is one of the eight built-in chart types, so the spokes, polygon and labels are drawn for you.

My big stats squash the small ones — how do I fix it?

Enable bAutoNormalize on the FFastRadarChartOptions (or bRadarAutoNormalize on the widget). It rescales each axis to its own maximum so a maxed Luck and a maxed Vitality both reach the outer ring instead of the largest raw number pinning one spoke and crushing the rest.

Can I overlay two characters on the same radar chart?

Yes. Add a second series with the second character's values against the same AxisLabels, give the two series contrasting colours via 'Update Series Style', and lower RadarFillOpacity so the polygons show through each other. Use the widget's dataset toggles (RegisterDataSet, SetDataSetVisible) to switch builds on and off at runtime.

Do I have to write any drawing or Slate code?

No. UFastChartWidget draws the radar in Slate during paint with no image assets and no per-project drawing code. You configure it either from the Event Graph with the builder/series API or by dropping a pre-styled template from the 'Chart Template Marketplace' button in the Widget Blueprint toolbar.

Which engine versions does it support?

Fast Chart Widgets is packaged for Unreal Engine 5.5, 5.6 and 5.7, and is Windows (Win64) only.

Get it on Fab

Fast Chart Widgets

Line, bar and pie widgets that bind straight to your data — no custom drawing code. Build dashboards, stats screens and debug overlays in minutes.

$25.99USD · one-time · free updates
Report a bug