Skip to content
SuperCoach

Data visualization

Charts help coaches see progress: completed workouts, revenue, check-in rates. Each theme has a five-color chart palette, --chart-1 to --chart-5, so the same chart code follows the product it runs in.

Palette

Each color's contrast against the background is computed for both themes. Chart marks are graphics, so they need 3:1 (WCAG 1.4.11).

Chart colors per theme and their contrast on the background
TokenSuperCoachCoach
--chart-1brand-600 · 7.40:1 Passorange-500 · 2.80:1 Below 3:1
--chart-2lime-600 · 3.05:1 Passgreen-700 · 5.02:1 Pass
--chart-3navy-900 · 12.25:1 Passorange-400 · 2.35:1 Below 3:1
--chart-4sand · 1.64:1 Below 3:1sand · 1.64:1 Below 3:1
--chart-5maroon · 10.17:1 Passmaroon · 10.17:1 Pass

The colors below 3:1 can't be the only way to tell series apart. Use them with direct labels, a legend with text, or a data table.

Example

The same chart follows the theme switch in the header. Open the data table under it: every chart needs a text alternative.

Completed workouts per week, by program type
  • Strength
  • Hypertrophy
  • Fat loss
  • Mobility
  • Endurance
0204060Week 1Week 2Week 3Week 4
Show data table
ProgramWeek 1Week 2Week 3Week 4
Strength42485155
Hypertrophy36393744
Fat loss58615763
Mobility18222524
Endurance27253033

Anatomy

  • Title says what is measured and over what period: "Completed workouts per week, by program type".
  • Legend with text labels, above the chart, in series order.
  • Axes: a zero baseline for bars, light gridlines in border, axis labels in muted-foreground at text-xs.
  • Marks in palette order: chart-1 for the most important series.
  • Data table or summary sentence as the text alternative.

Rules

  • At most five series. Group the rest as "Other".
  • Don't use status colors (success, destructive) for series. Keep them for good and bad.
  • Time runs left to right, in RTL too; labels and the legend follow the page direction.
  • Don't animate charts on every data load. A single fade-in is enough.

Related: Color, Accessibility.