Problem
Chart colors chosen on a light background can become hard to distinguish on a dark screen.
Solution
Design and test the palette against the backgrounds people will use. If the main setting is dark, start there and tune the light version separately.
Check text, thin chart lines, and muted labels on ordinary displays as well as the design monitor. Keep warning colors distinct from category colors, and avoid relying on color alone.
Support both themes when the audience needs them. Check exported charts and embedded content too, since they may appear on a different background.
Use when
Dashboards are commonly used in dark settings or the product supports both light and dark themes.
Don’t use when
The output is print, PDF or a projector, where dark backgrounds waste ink and wash out. If a dashboard is regularly screenshotted into documents, the light theme is the one that ships.
Trade-offs
Two themes require separate checks and maintenance. Very bright marks can dominate a dark chart, while muted ones can disappear. Images and exports may not fit the surrounding theme.
Checklist
- Was the dark palette designed first, or inverted from a light one?
- How many series colours stay distinguishable on the actual background at the actual size?
- Is pure white or pure yellow used anywhere large, and does it halate?
- Does every series colour meet the non-text contrast floor against the dark background?
- Do the status colours stay distinct from the categorical series colours in both themes?
- Have both palettes been checked for the common colour vision deficiencies?
- Has this been looked at on the worst screen it will actually run on?
- What happens when a dark chart is pasted into a light document?
- Do grid lines, axes and labels recede properly, or do they compete?
- Does the theme follow the system preference, and can it be overridden?
Compare
Grafana ships dark as its default theme and has done for its whole life, which is why its palette reads as the reference NOC palette and why its light theme has always felt like the derived one. Netdata also defaults dark and pushes further into density, which makes its per-series distinctions harder and its resting state calmer. Honeycomb supports both and leans on a heatmap where the colour ramp rather than the categorical palette carries the meaning, so the theme question is mostly about the ramp’s endpoints. ColorBrewer predates all of this and is still the most useful reference for the underlying problem, because it was built around whether a scheme survives colourblind viewers, photocopying and projection, which is the same durability question a dark theme asks. Cloudflare Radar ships both grounds as equals and holds its hues fixed across them, which shows what that costs. Capture the same page twice and the dark blue that dominates on white is the line closest to the background on charcoal, while the pale blue that was the quiet one carries the chart. Nothing was swapped; the lightness relationship simply ran out of room.
Related
Categorical series palette distinguishes separate series. Semantic status color defines warnings and health. Grayscale with alerts limits competing colors.
Wallboard mode adds distance and display constraints. Sequential and diverging scales handles color ranges for values.