The Analyst's Path

Colour-blind friendly chart colours

Colour-blind friendly chart colours are colours that a reader with a colour vision deficiency can still tell apart. About 8% of men of northern European descent and about 0.5% of women have one, so in a room of thirty people one or two readers may not be able to separate your hues. Separating colours by lightness as well as hue, or labelling the series directly, keeps a chart readable for them.

4 min readPart of Decluttering and Focus: Data-Ink, Pre-attentive Attributes, ColourOpen in course mode

Advertisement

About 8% of men of northern European descent and about 0.5% of women have a colour vision deficiency, most commonly a red-green one. In a room of thirty people that's between one and two readers who can't separate the hues you chose. They won't tell you.

You don't need a specialist tool to simulate the effect. It's about twenty lines of arithmetic. The ViƩnot, Brettel and Mollon (1999) linear-RGB approximations transform a colour into what a dichromat sees. Compare the transformed colours in a perceptually uniform space and you get a number for how separable they remain. Using CIE Lab and the CIE76 distance, a value of about 2.3 is the classic just-noticeable difference for two large adjacent patches. Small separated marks on a chart need far more than that.

Worked example: the default rainbow palette

Take the eight-hue rainbow palette that spreadsheet software hands out by default. Under normal vision its closest pair is a purple and a magenta at a distance of 29.30, which is comfortable. Here's what simulation does to it.

VisionClosest pairDistance
Normal#911EB4 / #F032E629.30
Deuteranope#E6194B / #3CB44B9.21
Protanope#4363D8 / #F032E66.09
Tritanope#E6194B / #F032E64.49

To a reader with normal colour vision the red and the green are 129.86 apart. For a deuteranope they collapse to a distance of 9.21, and that's where the two series stop being separable in practice. One pair out of twenty-eight falls below 10 under that simulation and three fall below 20. If the chart's message depends on telling those two series apart, it fails for those readers completely. And it fails without anyone noticing. Notice too that the closest pair changes from one simulation to the next. Screening a palette against one deficiency doesn't screen it against the others.

Advertisement

Two more checks: the accent pair and grey-scale

Now run the accent-and-neutral pair through the same test. Normal vision gives 75.50. Deuteranope gives 82.93, protanope 76.57 and tritanope 92.29. Every value is far above the threshold. Each simulated figure is also higher than the normal-vision one, and that isn't a mistake. The simulation moves both colours, and here it happens to move them apart. The pair holds up because lightness carries its separation. There's an L* gap of 32.01 between the accent at 49.08 and the neutral at 81.09, and lightness survives every dichromat transform intact.

The grey-scale test catches the same failure with no code at all. Print the chart in black and white, or convert the palette to relative luminance and sort it. The eight rainbow hues sort to luminances of 0.102, 0.151, 0.180, 0.265, 0.341, 0.356, 0.548 and 0.752. The smallest adjacent gap is 0.0149, and three of the eight fall inside a band of 0.114. If three series can't be told apart in grey, they can't be told apart on the room's bad projector or the photocopied handout either. Nor by the reader in row four.

How can you stop relying on hue alone?

Two encodings make the whole question irrelevant, and you can use both on nearly every chart.

The first is position. Split the series into a small-multiple grid and each series gets its own panel with its own label. Hue carries nothing at all and can be identical across every panel. That's why the retention rebuild uses six panels and not six colours.

The second is direct labelling. Put each series' name at the end of its own line, in the line's own colour, and the reader never has to match a swatch to a curve. Hue becomes a backup encoding. It's no longer the only one, and that's what redundancy is for.

If you can't do either, differentiate on two channels at once, such as hue plus lightness or hue plus line style. A dashed line and a solid line of the same hue survive greyscale, dichromacy and a bad projector together.

Advertisement

Part of the course

This page is part of Decluttering and Focus: Data-Ink, Pre-attentive Attributes, Colour (PR2.02), in Phase 2: Financial statement analysis and quality of earnings. The module's flashcards and its quiz are in the app.