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
- PolarAxes (recommended)
- Add 1 Serie - Serie.type = Radar - Serie.seriesData is recommended to have at least 3 points (with <= 2 dimensions, runtime will not draw / hover won't work)
- polarAxes.angleAxis.labels: dimension names - polarAxes.radiusAxis: value range (auto/manual)
3. Inspector fields
- ChartProfile / Coordinate System
- coordinateSystem = Polar2D
- PolarAxes (recommended for configuring Radar axes)
- polarAxes.angleAxis.labels: dimension labels - polarAxes.radiusAxis.autoRangeMin/autoRangeMax/minValue/maxValue/autoRangeRounding/labelFormat/...
- Series
- series[i].type = Radar - series[i].settings: actual type is RadarSettings - radar: layout (startAngleDeg / clockwise / innerRadius / outerRadius / plot / background) - stroke: polyline style - area: area fill - point: 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[]seriesData[i].name- If none exists, it shows
Dim i
- it prefers the Category axis that matches Data.XAxisId
Recommendation: for Radar, manage dimension names viapolarAxes.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/autoRangeMax decides whether min/max are automatic - minValue/maxValue take effect when the corresponding auto range is disabled - autoRangeRounding rounds auto min/max to tens/hundreds/custom unit - labelFormat affects tooltip/label formatting
7. Common pitfalls and troubleshooting
- Radar chart not visible
- Check coordinateSystem is Polar2D - Dimension count must be > 2 (labels or seriesData must be at least 3)
- Dimensions do not match / order is wrong
- Radar does not use x. It uses seriesData list order as dimension order - Put points in seriesData in the intended dimension order
- 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)
8. Further reading
- Series and data:
00_02-WorkflowAndLibrary.md - Common recipes:
04_08-CommonRecipes.md - FAQ:
04_09-FAQ.md