Radar Chart Alternatives: Why Spider Charts Mislead
A radar chart looks like a compact way to compare several attributes at once, but the filled polygon that catches the eye is a poor picture of the data. Its area changes when you reorder the axes, grows with the square of the values, and turns into a tangle once more than two or three series overlap. For most comparisons, a bar chart or dot plot shows the same numbers on a common baseline and cannot be distorted by axis order.
Quick answer: Radar (spider) charts mislead because the polygon's area depends on the arbitrary order of the axes, grows with the square of the values (double every score and the area quadruples), and becomes unreadable when more than 2-3 series overlap. A radar is acceptable for cyclical data (months, hours, compass directions) or for a single profile whose overall shape is the point. Otherwise, use a horizontal bar chart for one series, grouped bars or a dot plot for two or three, and small multiples, parallel coordinates, or a heatmap for many.
What is a radar chart (spider chart)?
A radar chart, also called a spider, web, or star chart, places each variable on its own spoke radiating from a center point, with the spokes spaced evenly around the circle (360°/n apart for n variables). Each value is plotted as a distance from the center, and the points are joined into a closed polygon. The spokes usually share one radial scale, such as a 0-10 rating, so every variable has to be expressed in comparable units. Radar charts show up most often in product comparisons, skill assessments, and sports player profiles. Excel offers three versions: Radar, Radar with Markers, and Filled Radar.
Why are radar charts misleading?
Because the individual points are accurate but the shape they form is not. The polygon's size and outline are driven by the chart's geometry as much as by the numbers, and a filled shape is what readers compare first. Four problems stack up:
- Axis order changes the area. The polygon's area depends on which values sit next to each other, and the order of the variables is usually arbitrary.
- Area grows with the square of the values. Double every value and the polygon covers four times the area.
- There is no common baseline. Comparing two attributes means comparing distances along spokes that point in different directions.
- Series overlap. Beyond two or three polygons, the lines cross everywhere and fills hide or blend into each other.
Why does the axis order change a radar chart's shape?
Because the polygon is built from triangles between neighboring spokes. With n evenly spaced spokes and a radial axis that starts at zero, the triangle between spokes i and i+1 has area 0.5 × ri × ri+1 × sin(360°/n), and the polygon's area is the sum of those triangles. So the area depends on the products of neighboring values, and which values are neighbors is decided by the order you listed the variables in. Put the high scores side by side and they multiply into large triangles. Interleave them with low scores and the same numbers draw a smaller, spikier shape. A single zero removes both triangles that touch its spoke.
Here is a worked example. Two laptops are rated 0-10 (higher is better) on six attributes. Laptop A scores 9 on Performance, Battery, and Display and 3 on Portability, Build, and Support. Laptop B scores 6, 5, 7, 8, 7, and 6 on the same attributes, in that order. Laptop A averages 6.0 and Laptop B averages 6.5. The table shows what two equally defensible axis orders do to the polygons. Areas are in squared score units, and a perfect 10 on every spoke would cover 259.8.
| Axis order | Laptop A area | Laptop B area | B's polygon is larger by |
|---|---|---|---|
| Performance, Battery, Display, Portability, Build, Support | 101.3 | 110.4 | 9% |
| Performance, Portability, Battery, Build, Display, Support | 70.1 | 108.3 | 54% |
The data and the averages are identical in both rows. In the first order, the chart says the laptops are close. In the second, Laptop B looks far more capable, only because Laptop A's three high scores no longer sit next to each other. You can check any ordering yourself:
import math
def radar_area(values):
"""Area of a radar polygon with evenly spaced spokes and a zero-based radial axis."""
n = len(values)
return 0.5 * math.sin(2 * math.pi / n) * sum(
values[i] * values[(i + 1) % n] for i in range(n)
)
# Order 1: Performance, Battery, Display, Portability, Build, Support
print(round(radar_area([9, 9, 9, 3, 3, 3]), 1)) # 101.3 Laptop A
print(round(radar_area([6, 5, 7, 8, 7, 6]), 1)) # 110.4 Laptop B
# Order 2: Performance, Portability, Battery, Build, Display, Support
print(round(radar_area([9, 3, 9, 3, 9, 3]), 1)) # 70.1 Laptop A
print(round(radar_area([6, 8, 5, 7, 7, 6]), 1)) # 108.3 Laptop B
Why does a radar chart exaggerate differences?
Because area grows with the square of the values. Each triangle's area is proportional to the product of two radii, so multiplying every value by k multiplies the polygon's area by k². In the six-spoke layout above, a product that scores 4 on every attribute covers 41.6 squared units, and one that scores 8 everywhere covers 166.3. The scores doubled; the area quadrupled. Each point's distance from the center is still a linear, honest encoding. The problem is that a filled polygon invites readers to compare shapes, and the size of the shape grows much faster than the scores behind it.
Why are values on a radar chart hard to compare?
Because there is no common baseline. Comparing Performance with Portability means comparing two distances measured along spokes that point in different directions, and reading an exact value means tracing along a spoke to the nearest concentric gridline and estimating between rings. Cleveland and McGill's ranking of perceptual tasks puts position along a common scale first, which is exactly what a bar chart or dot plot gives you and a radar chart gives up. The visual encoding hierarchy covers the full ranking.
Comparing two series on the same spoke is easier, since both points sit on one scale. On a radar, though, those points are often close together and attached to lines heading off at different angles, and long attribute labels crowd around the rim as you add spokes.
How many series can a radar chart show?
Two, sometimes three. Each added series is another closed polygon drawn over the same space, so the outlines cross at many points and it gets hard to tell which line is which at each crossing. Filled polygons make it worse: an opaque fill hides whatever is drawn beneath it, and semi-transparent fills blend into colors that do not appear in the legend. To compare four or more entities, give each one its own panel (small multiples) or switch to a chart with a shared baseline.
When is a radar chart acceptable?
When the circle means something, or when readers look at one shape rather than compare several. Three cases hold up:
- Cyclical data. Months of the year, hours of the day, days of the week, and compass directions wrap around, so a circle correctly puts December next to January and 11 p.m. next to midnight. The data fixes the axis order, so the arbitrary-order problem disappears. For wind direction, the standard form is a wind rose, which uses bars instead of a polygon.
- A single profile or "fingerprint." One entity scored on a fixed set of attributes, where the point is the overall shape, balanced versus lopsided, rather than exact values.
- A fixed format readers see repeatedly. If every chart uses the same axes, in the same order, on the same zero-based scale, regular readers learn to recognize shapes. A grid of small radars, one per entity, works this way and removes the overlap problem, though not the area distortion.
Even in these cases, label the scale, start the radial axis at zero, and put the actual numbers on the spokes or in a table beside the chart.
What should I use instead of a radar chart?
Choose the replacement by how many entities you are comparing. Most radar charts are really a small table of scores, and every option below keeps those scores on straight, aligned axes. For the broader decision, see our guide to choosing the right chart type.
| Alternative | Best when | Trade-off |
|---|---|---|
| Horizontal bar chart | One entity; readers need exact values or a ranking | Loses the single-shape "profile" look |
| Grouped bar chart | Two or three entities compared attribute by attribute | Gets crowded as entities are added |
| Dot plot or dumbbell chart | Two or more entities compared precisely on one shared axis | Less familiar to some audiences than bars |
| Small multiples | Many entities, each read as its own profile | Comparing across panels is less precise than within one panel |
| Parallel coordinates | Many entities; looking for clusters and trade-offs between attributes | Axis order still matters, axes must be normalized, and dense plots need highlighting to read |
| Heatmap | Many entities by many attributes; scanning for patterns | Color is the least precise channel, so print the values in the cells |
| Table | Readers need the exact numbers more than a pattern | No pattern at a glance |
A parallel coordinates plot is essentially a radar chart unrolled: the spokes become parallel vertical axes, and each entity becomes a line across them. In Excel, a clustered bar chart covers the one-to-three-entity cases; our Excel chart types guide explains when each built-in chart fits.
What does the laptop comparison look like without a radar chart?
Plot it as a dot plot: one row per attribute, one dot per laptop, and a light line joining the two dots so the gap on each attribute is visible. The trade-off the radar blurred is now plain. Laptop A leads by 2 to 4 points on Performance, Battery, and Display, and Laptop B leads by 3 to 5 points on Portability, Build, and Support. Reordering the rows changes the reading order but not a single length.
import matplotlib.pyplot as plt
attrs = ["Performance", "Battery", "Display", "Portability", "Build", "Support"]
laptop_a = [9, 9, 9, 3, 3, 3]
laptop_b = [6, 5, 7, 8, 7, 6]
y = list(range(len(attrs)))
fig, ax = plt.subplots(figsize=(6, 3.5))
ax.hlines(y, laptop_a, laptop_b, color="lightgray", zorder=1) # gap per attribute
ax.scatter(laptop_a, y, label="Laptop A", zorder=2)
ax.scatter(laptop_b, y, label="Laptop B", zorder=2)
ax.set_yticks(y, attrs)
ax.set_xlim(0, 10)
ax.invert_yaxis() # first attribute at the top
ax.set_xlabel("Score (0-10, higher is better)")
ax.legend(ncol=2, loc="lower center", bbox_to_anchor=(0.5, 1.0), frameon=False)
plt.tight_layout()
plt.show()
Common mistakes
Most misleading radar charts fail in one of these ways, and several are just as easy to make in Excel as in code:
- Mixing "higher is better" and "lower is better" axes. If price or weight is plotted as a raw value, a bigger polygon no longer means a better product. Invert those axes, or score them so outward always means better, and say so in the caption.
- Starting the radial axis above zero. Values at the minimum collapse into the center and small differences balloon. Check the axis minimum, because many tools set it automatically from the data.
- Putting different units on one radial scale without normalizing. Revenue in millions next to a 1-5 satisfaction score flattens the small-unit variables. The normalization choice also changes the shape: min-max scaling across only two entities puts one at the center and the other at the rim on every spoke where they differ, however close their raw values are.
- Treating polygon area as an overall score. Area depends on axis order and squares the values. If you need one summary number, compute a mean or a weighted sum and show it as a number.
- Letting the tool pick the axis order. Excel draws the spokes in the order of the categories in your source data, so sorting the table redraws the shape. Choose the order deliberately, for example by grouping related attributes, and keep it identical across every chart you compare.
- Overlaying four or more series, especially as filled polygons.
- Using a radar for a non-cyclical trend. Quarterly results over three years do not wrap around, but the polygon's closing segment joins the last quarter to the first as if they were adjacent. Use a line chart.
Pro Tip: Before you publish a radar chart, redraw it with the axes shuffled. If the shuffled version tells a different story, such as a different apparent winner or a much bigger or smaller gap, the chart is reporting your axis order rather than your data, so switch to a dot plot or grouped bars. If stakeholders insist on the radar because it is familiar, the same approach that works for gauge chart alternatives applies: show both versions side by side on the real data and let the aligned chart make the case.
โ Back to Visualization Tips