Skip to content
,
Inclusive data products · Part 1

Accessible charts for real users

13 min read
Editorial featured image for Accessible charts for real users. Title text reads Accessible charts for real users.

An accessible chart is one that gives every viewer the same fact, whatever their eyesight, screen, or tools. Color alone cannot do that job. Direct labels, strong contrast, a second visual cue, and a short written takeaway can.

Say a coworker pastes a screenshot into a team chat. It shows three lines on a trend chart, red for “bad” and green for “good,” with a legend that does not survive a dark mode app, plus the message “we need to move.” Half the channel cannot tell which line is which without squinting. One person is color-blind, another is on a phone, and a third will hear the deck later through a screen reader that describes the picture only as “image.” The decision still happens, but the chart has failed as a shared fact.

This post opens Inclusive data products, a short series about building analytics that real people can use, whatever their vision, devices, languages, and comfort with charts. Inclusive design is not a nice-to-have skin on a pretty dashboard. It is how you stop misleading part of your audience by accident.

Accessible charts are about shared facts, not perfection

Accessibility (often shortened to A11y, which is “a,” then 11 letters, then “y”) is the craft of making products usable by people with a wide range of abilities and situations. For charts, that means four things. Someone with color vision deficiency can still tell the series apart, and someone with low vision can read the labels. Someone using a keyboard or assistive technology gets the same takeaway as a mouse user, and someone skimming a PDF export is not stuck with a blur of tiny type.

You do not need a legal review on every small trend line. You do need a habit: if the only way to understand the chart is perfect vision, a large monitor, and the legend colors you memorized last week, the chart is not ready for a decision room.

Inclusive charting also helps everyone. Direct labels reduce legend hunting, strong contrast helps on projectors, and pattern or shape cues help on grayscale printouts. Clear titles turn “pretty” into “usable,” so the same discipline that makes a chart accessible also makes it faster for busy executives.

Rule of thumb: If you print the chart in grayscale and the story disappears, you never had a story. You had decoration.

The four basics: not color-only, labels, contrast, alt text

Start with a simple do and avoid frame that you can hang next to your laptop.

Filled accessibility: labels, contrast, alt text; avoid color-only and 3D pies
Filled accessibility: labels, contrast, alt text; avoid color-only and 3D pies

1. Do not rely on color alone

Color is powerful, and color alone is fragile. Roughly 1 in 12 men and 1 in 200 women have some form of red-green color vision deficiency. Many more people view charts on washed-out projectors, night mode screens, or photocopied packs. If series A is only “the blue line” and series B is only “the orange line,” you are gambling that every viewer can separate those hues under real lighting.

The fix is a second channel, and you have five to choose from.

  • Shape: circles, squares, and triangles on the points.
  • Line style: solid, dashed, or dotted.
  • Pattern: hatch marks on bars or areas, used sparingly because clutter is real.
  • Direct labels, which name the series on the chart itself and not only in a legend.
  • Position or order, such as sorting bars so the ranking is visible without any color.

Status colors are the classic failure mode. “Red means missed target, green means hit target” feels intuitive until two rows both look muddy brown to someone with deuteranopia, a common form of red-green color blindness. Prefer icons, words such as “miss” and “hit,” or a single-hue scale with clear labels. If you keep red and green for brand reasons, add a non-color cue every time.

2. Labels that survive the real world

Axis titles, unit labels, and series names are not optional footnotes. They are the chart’s sentence structure. A bar chart of “42, 38, 51” without a unit on the vertical axis is an inkblot test. A label such as “Revenue ($ thousands)” or “Active accounts” turns ink into a claim that someone can challenge.

Four label habits pay off quickly.

  • Put the unit in the axis title or subtitle, and not only in a hover tooltip.
  • Prefer direct labels on the last point of a line, or on short bar series, when there is room.
  • Write a takeaway title when the chart is meant for a decision, such as “North region missed plan by 8 pts,” instead of a generic noun phrase like “Revenue by region.”
  • Keep tick labels large enough for a viewer in the back row. If they cannot read them, simplify the chart.

Tooltips are a gift for exploration and a trap for accessibility, because keyboard users and many assistive tools never get the hover experience. Anything essential must appear in the static view, whether as a title, a label, a footnote, or a companion table.

3. Contrast that works on real screens

Low-contrast gray text on a cream background looks “modern” in a design tool and vanishes on a conference room wall. The contrast guidance in the Web Content Accessibility Guidelines (WCAG) is a useful north star for text, even when your business intelligence (BI) tool is imperfect. Aim for dark text on a light background, or the reverse, with enough separation that thin gridlines do not compete with the data marks.

Analysts can control five contrast tips without a design system.

  • Avoid light gray text for axis labels, and use near-black or dark slate instead.
  • Do not place white text on pastel fills.
  • Prefer fewer, stronger series colors over a rainbow of pastels.
  • Test the export as an image file at presentation size, and not only in the interactive dashboard zoom.
  • Watch dual-axis charts, where two pale lines against a busy grid tax everyone’s eyes.

4. Alt text and non-visual access

When a chart is an image, such as a slide export, a blog post, an email, or a note pasted into a workspace tool, alt text is the accessible stand-in for the picture. Good alt text is not “chart of sales.” Good alt text is a short statement of the takeaway plus the key comparison: “Bar chart: Q3 revenue by region. West $4.2M leads; East $2.1M lowest; West is about 2x East.”

For interactive dashboards, pair the visual with a data table view or a downloadable CSV when the tool allows it, because screen reader users and many power users both benefit. If your stack cannot show a table, write a one-sentence caption under the chart in the dashboard text box. Captions travel better than knowledge that lives only in someone’s head.

Keyboard access matters too. If critical filters only work with drag gestures, document a fallback path such as URL parameters, a filter pane, or default views. You will not fix every vendor gap in one sprint, but you can stop shipping “mouse-only insights” as if they were neutral.

Chart types that fight accessibility

Some chart choices make inclusion harder by design. You can still use them carefully, but they need extra support from labels and tables.

3D pies and decorative depth

3D pie charts distort area and make comparison hard even for people with excellent vision, so skip them. If you need parts of a whole, use a simple 2D pie or donut with large labels, or better, a horizontal bar sorted by size. Accessibility and accuracy usually call for the same redesign.

Tiny type and dense dashboards

Twelve charts on one screen is a show of density that fails on laptops and fails harder on phones. Prefer fewer views with readable type, and use drill-through or linked pages instead of microscopic repeats. If leadership insists on the wall of charts, at least make the headline number tiles high contrast and give each chart a plain-language title.

Rainbow scales and misused diverging scales

Rainbow scales look scientific but often encode poorly for color-deficient viewers. Prefer single-hue ramps, or carefully tested multi-hue scales built for data, such as perceptually ordered palettes from established visualization research. Diverging scales (two colors that meet in the middle) need a meaningful midpoint, and a decorative white center should not hide the interesting values.

Dual axes without dual honesty

Dual axes can mislead even when the colors are perfect. If you use them, label both axes loudly, keep series styles distinct beyond hue, and consider two small side-by-side charts instead. Accessibility problems and chart-crime problems often travel together, so fixing one often improves the other.

Worked example: redesign a traffic-light KPI chart

Imagine a weekly operations review. Product managers track feature adoption for three groups of customers: free trial, paid self-serve, and enterprise. The first chart is a line chart with three series in red, yellow, and green only, titled “Adoption,” with no units. The legend is a color key, and hovering shows the exact percentages. Leadership wants to know whether enterprise is recovering after a pricing change.

Several problems are stacked on top of each other here.

  • The series are told apart by color alone.
  • The red and green suggest good and bad, even though the lines are just groups of customers.
  • There is no unit, and no definition of “adoption.”
  • The essential values show up only on hover.
  • There is no alternative text path for exports to slides.

You can fix all of this in Tableau, Power BI, Looker, or matplotlib by following seven steps.

  1. Define the metric in the subtitle: “Weekly active accounts that used Feature X at least once / accounts eligible that week.”
  2. Rename the series with full words: Free trial, Paid self-serve, Enterprise.
  3. Use solid, dashed, and dotted lines plus three high-contrast hues that are not red-versus-green status coding.
  4. Direct-label the end of each line with the latest week’s percentage.
  5. Write a takeaway title: “Enterprise adoption still 6 pts below paid self-serve after pricing change.”
  6. Add a small table under the chart with the last four weeks for each group, or turn on the tool’s data table view.
  7. When exporting to slides, paste a one-sentence caption that could stand alone as alt text.

Here is a lightweight checklist you can fill in your review notes whenever a dashboard changes.

A11y checklist table with rows for pattern or label, keyboard or table alt, and color blind safe
A11y checklist table with rows for pattern or label, keyboard or table alt, and color blind safe

Below is the checklist filled in for the adoption chart.

ItemPass?Note
Pattern or labelYesLine styles + end labels
Keyboard / table altYesData table tab enabled
Color blind safeYesNo red/green status encoding
ContrastYesDark labels, tested on projector
Alt / caption on exportYesTakeaway sentence in slide notes

You can also sketch the same idea in code when you control the rendering. The library does not matter, because the point is a second visual cue and explicit numbers.

# Conceptual: plot three cohorts with linestyle + marker, not color alone
import matplotlib.pyplot as plt

weeks = list(range(1, 9))
free =  [12, 14, 15, 16, 17, 18, 18, 19]
paid =  [28, 29, 30, 31, 32, 33, 34, 34]
ent =   [22, 21, 20, 21, 22, 24, 25, 26]

fig, ax = plt.subplots()
ax.plot(weeks, free, linestyle="-",  marker="o", label="Free trial")
ax.plot(weeks, paid, linestyle="--", marker="s", label="Paid self-serve")
ax.plot(weeks, ent,  linestyle=":",  marker="^", label="Enterprise")
ax.set_xlabel("Week")
ax.set_ylabel("Adoption rate (%)")
ax.set_title("Enterprise adoption still below paid self-serve")
ax.legend()
for y, name in [(free[-1], "Free"), (paid[-1], "Paid"), (ent[-1], "Ent")]:
    ax.annotate(f"{y}%", (weeks[-1], y))
plt.show()

This pattern buys you three things. A grayscale printout still shows three distinct series, a color-blind viewer can use the marker shapes, and an export that works with screen readers can quote the title and the annotated values. None of that required a special accessibility product. It only required refusing to tell the story with color alone.

Process: when accessibility enters the analytics workflow

If you only audit charts the night before an all-hands meeting, you will always ship something fragile. Build a lighter habit into normal delivery instead, with one small check at each stage.

  • At definition time, when you name a metric, also decide how it will be shown, including the unit, the comparison, and what one row means. Accessible charts start with clear metrics, so see the metrics series if your team still argues about titles after the chart is built.
  • At draft time, run a grayscale test, take a phone screenshot, and ask one colleague who was not in the build meeting to read the chart.
  • At review time, go through the checklist rows for pattern or label, table alternative, and color-blind safety, with the same seriousness as a SQL peer review.
  • At publish time, add a caption or alt text to anything that leaves the BI tool, whether slides, notes, a blog, or email.
  • At incident time, if someone misreads a chart during a decision, treat it like a data quality bug and fix the encoding. Do not stop at “let’s align offline.”

Quality culture already cares about freshness and correctness, and inclusive visuals are quality of communication. They belong next to the data quality habits you already teach, because if people cannot read the chart, the number did not land.

Tool constraints without fatalism

Not every BI platform makes patterns easy. Some default palettes are hostile, and some “auto” charts love dual axes and tiny legends. Work inside the constraints with five moves.

  • Create a team palette that has been tested for common color deficiencies, and ban one-off rainbows.
  • Standardize templates with larger fonts and required subtitle fields for units.
  • Prefer chart types your tool labels well, such as bars and lines with markers, over flashy custom visuals.
  • When the tool cannot hatch bars, lean harder on position and labels, with sorted bars and direct values.
  • Document known gaps in a short dashboard accessibility note, so reviewers know what to compensate for.

If you are choosing a new stack, ask vendors about data tables, keyboard navigation, high-contrast themes, and export options. Buying decisions are inclusion decisions, and they are about more than license math.

Common mistakes

  • Using red and green alone for status. Add text, icons, or shape, because status is a claim and a hue is not.
  • Making the legend the only decoder. Legends fail under cropping, printing, and color issues, so direct labels help.
  • Keeping essential facts only in hover text, which static viewers and many assistive paths never see.
  • Using 3D pies and other chart junk, which harm accuracy and accessibility together.
  • Shrinking the type to fit more charts. Fewer readable charts beat a wall of illegible ones.
  • Leaving the alt text as a filename. “image.png” is not a takeaway, so write the comparison.
  • Assuming “everyone on our team can see fine.” Teams change, stakeholders change, and exports leave the room.
  • Treating accessibility as a design-only task. Analysts choose encodings every day, so own that choice.

How to practice this week

  1. Pick one chart you own that uses color as the main way to tell series apart.
  2. Export it, convert it to grayscale or print it in black and white, and write down what is still clear and what is lost.
  3. Add one non-color channel, such as line style, markers, direct labels, or sorted bars with value labels.
  4. Write a one-sentence takeaway title and a one-sentence alt text or caption.
  5. Enable or attach a data table for the same numbers.
  6. Run the three-row checklist (pattern or label, keyboard or table alternative, color-blind safe) and store the note next to the dashboard.

The next post in this series covers inclusive metrics and whose story is missing from the number itself. A chart can be perfectly labeled and still leave people out of the metric definition. For broader skills paths, start at Learn.

Quick recap

  • Accessible charts make the same fact available across differences in vision, device, and assistive tools.
  • Never rely on color alone, and pair hue with shape, pattern, line style, order, or labels.
  • Labels, units, and takeaway titles are accessibility features and not decoration.
  • Contrast and font size must survive projectors, phones, and exports.
  • Alt text and data tables carry the takeaway when the picture cannot.
  • A short checklist in review is enough to stop most avoidable chart exclusion.

Series notes

This is Part 1 of the Inclusive data products series. Related: metrics and data quality.

Sources

Written by

Jose S

Founder & Lead Analyst · Analytics Made Simple

Hands-on data strategist, analytics engineering lead, and educator. Writing practical, no-fluff guides to help everyday teams, analysts, and engineers master SQL, AI systems, and modern data architectures.

Keep going

Same lessons in your feed

Short diagrams, hooks, and weekly tutorials on Substack, Instagram, X, and Facebook.

Google Search Prefer our practical guides in Google Search & Top Stories: