Radar Chart (Radar)
This chapter explains how Radar charts work in EasyChart: where dimension labels come from, how value ranges are calculated, and how data point order is interpreted, mapped to Inspector fields.
1. Use cases
- Multi-dimensional metric comparison
- Ability/attribute radar
2. Minimum viable setup (checklist)
ChartProfile.coordinateSystem = Polar2D- Series
- Add 1
Serie Serie.type = RadarSerie.seriesDatais recommended to have at least 3 points (with <= 2 dimensions, runtime will not draw / hover won’t work)
- Add 1
- PolarAxes (recommended)
polarAxes.angleAxis.labels: dimension namespolarAxes.radiusAxis: value range (auto/manual)
3. Inspector fields
-
ChartProfile / Coordinate System
coordinateSystem = Polar2D
-
PolarAxes (recommended for configuring Radar axes)
polarAxes.angleAxis.labels: dimension labelspolarAxes.radiusAxis.autoRangeMin/autoRangeMax/minValue/maxValue/autoRangeRounding/labelFormat/...
-
Series
series[i].type = Radarseries[i].settings: actual type isRadarSettingsradar: layout (startAngleDeg / clockwise / innerRadius / outerRadius / plot / background)stroke: polyline stylearea: area fillpoint: point style (point visibility also affects hover pick radius)
series[i].labelSettings: data point labels (can show dimension name and value)
4. SeriesData field interpretation (runtime behavior)
Key point for Radar: dimension order is defined by the index of items in the seriesData list.
- Value: uses
SeriesData.value - Dimension index: uses the position
iinseriesData(0..dimensionCount-1) SeriesData.xis not used for positioning in Radar rendering (do not rely on x to represent dimensions)
Where does dimensionCount come from:
- Prefer
Data.PolarAxes.angleAxis.labels.Count - If angleAxis.labels is not configured, it uses labels from a Category Axis (see section 5)
- Otherwise, fall back to
seriesData.Count(or the maximum count among multiple series)
5. Actual priority order for dimension labels
Runtime resolves dimension names in this priority order:
polarAxes.angleAxis.labels[i]labels[i]from aAxisType.Categoryaxis inaxes[]- it prefers the Category axis that matches
Data.XAxisId
- it prefers the Category axis that matches
seriesData[i].name- If none exists, it shows
Dim i
Recommendation: for Radar, manage dimension names via
polarAxes.angleAxis.labels. UseSeriesData.nameas a fallback.
6. How radius value range is calculated
Radar radius range is calculated from SeriesData.value:
- By default, it computes auto range from values across all Radar series
- If you configure
polarAxes.radiusAxis:autoRangeMin/autoRangeMaxdecides whether min/max are automaticminValue/maxValuetake effect when the corresponding auto range is disabledautoRangeRoundingrounds auto min/max to tens/hundreds/custom unitlabelFormataffects tooltip/label formatting
7. Common pitfalls and troubleshooting
-
Radar chart not visible
- Check
coordinateSystemisPolar2D - Dimension count must be > 2 (labels or seriesData must be at least 3)
- Check
-
Dimensions do not match / order is wrong
- Radar does not use
x. It usesseriesDatalist order as dimension order - Put points in
seriesDatain the intended dimension order
- Radar does not use
-
Hover is hard to trigger
- Radar pick radius is related to
RadarSettings.point.size - If
point.show=false, pick radius becomes 0 (almost impossible to hover)
- Radar pick radius is related to
8. Further reading
- Series and data:
00_02-WorkflowAndLibrary.md - Common recipes:
04_08-CommonRecipes.md - FAQ:
04_09-FAQ.md