Colors
Colors define the semantic roles of color in analytical contexts.
They encode recurring analytical meaning across charts, dashboards, and geospatial overlays without coupling the system to chart types or rendering libraries.
This category is the primary semantic API of Data Visualization.
Purpose
Data Visualization colors standardize how analytical meaning is represented through color.
They govern:
- categorical identity
- ordered magnitude
- midpoint comparison
- analytical references
- contextual emphasis
- data status
They do not define chart types, chart behavior, or full map styling.
Scope
This category governs semantic color roles for:
- categorical series
- sequential scales
- diverging scales
- analytical references
- analytical states
- data status
This category does not govern:
- chart-specific color logic
- heatmap or choropleth implementation details
- statistical classification methods
- legend behavior
- basemap design
- forecast or uncertainty behavior by color alone
Those concerns belong to patterns and implementation.
Principles
Semantic-first
Tokens express analytical meaning, not palette names or visual styling.
Task-first
Color roles are defined by the analytical task they support, not by chart type.
Small and explicit
Only stable, recurring color semantics are tokenized.
Color is primary, not sufficient
Color provides the main analytical signal, but critical meaning must still be supportable through other encodings when needed.
Distinguish meaning classes
Categorical identity, ordered magnitude, midpoint comparison, and data absence are different semantic problems and must not be collapsed into one system.
Model
Colors follow the same extension model as the category:
core.colors → semantic.dataviz.color
patterns/specs → consume semantic only
Core
Analytical color comes from core.colors.* — the same palette foundation used by the UI.
This keeps color values in a single location and makes dataviz palettes automatically consistent with the brand.
Core tokens are value-only and themeable.
Semantic
Semantic tokens define analytical roles.
They form the public API of the category and must reference core tokens only.
Palette Source
Analytical colors come from core.colors.* — the same foundation palette used by UI semantics.
The hue families used by dataviz (brand, red, orange, yellow, green, teal, purple, pink, neutral) must be provided in core.colors when building the theme.
Core color tokens must remain context-free and value-only.
Semantic Tokens
dataviz.color.series.1..8
dataviz.color.scale.sequential.1..7
dataviz.color.scale.diverging.neg3
dataviz.color.scale.diverging.neg2
dataviz.color.scale.diverging.neg1
dataviz.color.scale.diverging.neutral
dataviz.color.scale.diverging.pos1
dataviz.color.scale.diverging.pos2
dataviz.color.scale.diverging.pos3
dataviz.color.reference.baseline
dataviz.color.reference.target
dataviz.color.state.highlight
dataviz.color.state.muted
dataviz.color.state.selected
dataviz.color.status.missing
dataviz.color.status.suppressed
dataviz.color.status.not-applicable
These tokens form the semantic contract for analytical color.
Families
Series
series.* defines categorical identity.
Use series colors for:
- nominal categories
- distinct groups
- named series in charts or maps
Series colors are discrete and non-ordered.
They must not imply magnitude, ranking, or midpoint comparison.
Sequential Scale
scale.sequential.* defines ordered magnitude from low to high.
Use sequential scales for:
- ordered values
- progressive intensity
- quantitative or ordinal ranges where one direction is semantically meaningful
Sequential scales must preserve perceptual order.
Lower and higher steps must remain visually interpretable as part of the same ordered continuum.
Diverging Scale
scale.diverging.* defines ordered comparison around a meaningful midpoint.
Use diverging scales only when the data has a true center, such as:
- zero
- baseline
- benchmark
- target delta
Diverging scales must not be used when the midpoint is arbitrary or absent.
neutral represents the central class.
Negative and positive sides must be interpreted symmetrically.
Reference
reference.* defines supporting analytical guides.
reference.baselinerepresents an analytical baselinereference.targetrepresents a desired or required target
Reference colors are not primary data colors. They exist to support interpretation.
State
state.* defines analytical emphasis.
state.highlightemphasizes a focal subsetstate.mutedde-emphasizes secondary contextstate.selectedmarks explicit analytical selection
State colors must not redefine categorical identity or scale semantics.
They modify reading context, not analytical class.
Status
status.* defines non-analytic data conditions.
status.missingmeans data is absentstatus.suppressedmeans data exists but is intentionally withheldstatus.not-applicablemeans the value does not apply to the case
Status tokens are essential to avoid collapsing distinct data conditions into a single visual treatment.
They must not be used to encode zero or low values.
Geospatial Use
Geospatial overlays use the same color semantics as the rest of Data Visualization.
This means:
- categorical map overlays use
series.* - ordered geographic intensity uses
scale.sequential.* - midpoint comparisons on maps use
scale.diverging.* - map-specific overlay emphasis may use
state.* - missing or suppressed geographic data must use
status.*
dataviz.geo.* does not define a second color language for maps.
Geography changes context, not the semantic meaning of analytical color.
Usage Rules
1. Use the correct semantic family
Choose colors by analytical meaning:
- categories →
series.* - ordered magnitude →
scale.sequential.* - midpoint comparison →
scale.diverging.* - guides →
reference.* - emphasis →
state.* - absence/withholding/inapplicability →
status.*
Do not substitute one family for another.
2. Do not encode chart types
Color tokens must remain chart-agnostic.
Invalid examples:
bar.primaryline.forecastchoropleth.fillmap.region.positive
3. Do not overload color with complex meaning
Forecast and uncertainty must not be represented by color alone.
When those concepts are needed, use composition across categories, such as:
- color + stroke
- color + opacity
- color + pattern
4. Keep series bounded
series.* is intentionally bounded.
If the number of categories exceeds the supported set, solve the problem in the pattern layer through grouping, faceting, filtering, interaction, or another visualization strategy.
Do not expand the semantic series range casually.
5. Keep status distinct from value
Missing, suppressed, and not-applicable are not value states.
They must remain visually distinguishable from:
- zero
- low values
- muted context
- unselected data
Relationship to Other Categories
Encodings
Encodings reinforce color semantics when color alone would make interpretation fragile.
Geospatial semantics
Geospatial semantics govern how overlays interact with spatial context. They do not redefine analytical color meaning.
Foundation colors
Foundation UI colors and Data Visualization colors solve different problems.
UI colors express interface meaning. Data Visualization colors express analytical meaning.
These systems must remain separate.
Validation
Errors (validation must fail when)
-
diverging color semantics are structurally incomplete:
- missing
neutral - missing one or more negative steps
- missing one or more positive steps
- negative and positive sides have different cardinality
- missing
-
any two of these status tokens resolve to the same effective value:
dataviz.color.status.missingdataviz.color.status.suppresseddataviz.color.status.not-applicable
-
any status token resolves to the same effective value as:
- a sequential scale step
- a diverging scale step
dataviz.color.state.muted
Warning (validation should warn when)
-
dataviz.color.seriesexceeds1..8 -
dataviz.color.scale.sequentialexceeds1..7 -
dataviz.color.reference.baselineordataviz.color.reference.targetresolves to the same effective value as a primary data color token -
dataviz.color.state.highlight,dataviz.color.state.muted, anddataviz.color.state.selectedlose effective distinction -
adjacent sequential steps resolve to the same effective value
-
adjacent diverging steps on the same side resolve to the same effective value
Summary
Colors define the semantic roles of color in analytical systems.
They provide a stable, reusable API for representing:
- categories
- magnitude
- midpoint comparison
- references
- emphasis
- data status
By keeping these roles explicit and bounded, the system remains simple, scalable, and unambiguous across charts, dashboards, and geospatial overlays.