Accessible Charts
Make every chart work for people who cannot see it, cannot use a mouse, or cannot tell colours apart: names, descriptions, table twins, keyboard paths and an honest audit.
A chart is a picture, and a picture means nothing to a screen reader unless you give it words. This phase starts from what a screen reader actually receives from the page (the accessibility tree), and shows what an SVG or a canvas hands over when you add nothing.
Then you add, one layer at a time, everything a person needs to get the same answer from the chart: a short name, a longer description written from the data, a real table next to the chart, a way to walk through the data with the keyboard, colours and motion that respect the reader, and a sound-based option as an idea.
You finish with a short audit you can repeat on any chart, and a build that makes the Lumen dashboard usable for Meera, the team's analyst who reads it with a screen reader. Every number in this phase was measured in a real browser.
Phase 15 · the story
Meera, data analyst
“I open the dashboard and my screen reader says "image", so I cannot tell what any of these charts say.”
Meera has been the team's analyst for three years. She knows the Lumen data better than anyone: which stations are busy, which months the model gets wrong, which numbers the board quotes. She reads the web with a screen reader, a program that speaks the page aloud.
On Monday she opens the new dashboard. The key numbers read fine, because they are plain text. Then she reaches the charts. The line chart of the whole year is announced as "image". The station bars are announced as "image". The heatmap and the dot map are silent. She is the person on the team who most needs these answers, and the dashboard shows her nothing.
Nobody did this on purpose. Each chart was drawn correctly, and each one looked right. This phase teaches the team to give every chart a name, a description, a table and a keyboard path, and to check the result with the same care they give the colours. By the end, Meera can get every chart's answer without seeing it.
In this phase
You will learn
- Say what a screen reader receives from an SVG, from a canvas and from a chart with a proper name
- Write descriptions from the data, with a table twin and keyboard navigation, and keep them in step when the data changes
- Check contrast, zoom, motion and sound, and run a short audit on any chart
- Make the whole Lumen dashboard usable without sight
You write code in
In your Vite project lumen-dashboard/ (run npm run dev), and in the editor on this page
Files you touch
- src/parts/describe.js
- src/parts/table-twin.js
- src/charts/RidesLine.jsx
- src/charts/StationsBar.jsx
- src/charts/stations-stacked.js
- src/charts/june-heatmap.js
- src/charts/fleet-treemap.js
- src/charts/station-map.js
- src/charts/trips-canvas.js
- src/styles/charts.css
Practise this phase
Hands-on exercises: write the code, see your page live, and press Check to have it tested automatically.