Color palettes

Categorical

The default 9-color palette used automatically when the theme is enabled.

Key Hex
0 #34A7F2
1 #FF9800
2 #664AB6
3 #4EC2C0
4 #F3578E
5 #081079
6 #0C7C68
7 #AA0000
8 #DDDA21

An accessible text-contrast variant is available when categorical colors are applied to text rather than marks:

Key Hex
0 #106CA1
1 #B65F0C
2 #664AB6
3 #208383
4 #BB3B64
5 #081079
6 #0C7C68
7 #AA0000
8 #767712
Key Hex
yes #0071BC
no #EBEEF4
attaviz.CATEGORICAL       # 9-color palette (default)
attaviz.CATEGORICAL_TEXT  # high-contrast text variant
attaviz.BINARY            # two-color pair

Sequential

Five monochrome ramps. Use with alt.Scale(range=...):

alt.Chart(data).mark_rect().encode(
    color=alt.Color("value:Q", scale=alt.Scale(range=attaviz.SEQ_GREEN))
)
Step SEQ_BLUE SEQ_GREEN SEQ_PURPLE SEQ_YELLOW SEQ_RED
0 #E3F6FD #D2FFE1 #FFE2FF #FDF7DB #FFD6B9
1 #75CCEC #8AD4A7 #D3ACE6 #ECB63A #F99C78
2 #089BD4 #54A67F #A37ACD #BE792B #E56245
3 #0169A1 #27795A #6F4CB4 #8D4117 #C1261A
4 #023B6F #084D31 #2F1E9C #5C0000 #870000

Two semantic sequential ramps convey “good → bad” direction:

Step SEQ_BAD_TO_GOOD SEQ_GOOD_TO_BAD
0 #FDF6DB #E3F6FD
1 #A1CBCF #91C5F0
2 #5D99C2 #8B8AC0
3 #2868A0 #88506E
4 #023B6F #691B15

Diverging

Three diverging palettes with a neutral midpoint (#EFEFEF). Pair with domainMid=0 for symmetric scales centered at zero:

alt.Chart(data).mark_bar().encode(
    color=alt.Color(
        "change:Q",
        scale=alt.Scale(range=attaviz.DIV_DEFAULT, domainMid=0),
    )
)
Step DIV_DEFAULT DIV_NEUTRAL DIV_ALTERNATIVE
0 #920000 #24768E #002C8B
1 #BD6126 #4EA2AC #4868AF
2 #E3A763 #98CBCC #79A7D5
3 #EFEFEF #EFEFEF #EFEFEF
4 #80BDE7 #D1AEE3 #ECA08C
5 #3587C3 #A873C4 #C9573E
6 #025288 #754493 #920000

Semantic palettes

Regions

Key Hex
NAC #34A7F2
SSF #FF9800
MEA #664AB6
SAS #4EC2C0
EAS #F3578E
LCN #0C7C68
ECS #AA0000
AFW #DDDA21
AFE #FF9800
WLD #081079

Text variants:

Key Hex
NAC #106CA1
SSF #B65F0C
MEA #664AB6
SAS #208383
EAS #BB3B64
LCN #0C7C68
ECS #AA0000
AFW #767712
AFE #B65F0C
WLD #081079

Secondary shades:

Key Hex
NAC #34A7F2, #80D2E8, #163C6C, #106CA1
SSF #FF9800, #FFD554, #8F3B18, #C2660D
MEA #664AB6, #B38FD8, #462F98, #EDC2F1
SAS #4EC2C0, #228B8B, #006061, #95E2E2
EAS #F3578E, #F8A8DF, #BB3B64, #801E37
LCN #0C7C68, #54AE89, #084D31, #9ADEAA
ECS #AA0000, #EB6E51, #FF9E75, #D43729
AFW #DDDA21, #7B7C13, #ABAA22, #4E5200
AFE #FF9800, #FFD554, #8F3B18, #C2660D
attaviz.REGIONS            # code → hex (e.g. "NAC", "SSF", ...)
attaviz.REGIONS_TEXT       # accessible text variants
attaviz.REGIONS_SECONDARY  # 4-shade series per region

Use in an explicit scale:

regions = attaviz.REGIONS
alt.Chart(data).mark_bar().encode(
    color=alt.Color(
        "region:N",
        scale=alt.Scale(domain=list(regions), range=list(regions.values())),
    )
)

Income groups

Key Hex
HIC #016B6C
UMC #73AF48
LMC #DB95D7
LIC #3B4DA6
attaviz.INCOME       # dict: "HIC", "UMC", "LMC", "LIC" → hex
attaviz.INCOME_LIST  # ordered list (HIC → LIC)

Demographics

Key Hex
female #FF9800
male #664AB6
diverse #4EC2C0
Key Hex
urban #6D88D1
rural #54AE89
Key Hex
0 #F8A8DF
1 #B38FD8
2 #462F98
3 #6D88D1
4 #A1C6FF
attaviz.GENDER        # dict: "female", "male", ...
attaviz.URBANIZATION  # dict: "urban", "rural"
attaviz.AGE           # list, youngest → oldest (5 shades)

Pillars

Institutional pillar colors.

Key Hex
people #F7B841
planet #07AB50
prosperity #872C8F
infrastructure #91302F
digital #5D6472
corporate #004972
attaviz.PILLARS
# {'people': '#F7B841', 'planet': '#07AB50', 'prosperity': '#872C8F',
#  'infrastructure': '#91302F', 'digital': '#5D6472', 'corporate': '#004972'}

Grey scale

Five greys used across the theme.

Constant Hex Typical use
GREY_500 #111111 primary text
GREY_400 #666666 secondary text
GREY_300 #8A969F reference lines
GREY_200 #CED4DE grid lines
GREY_100 #EBEEF4 backgrounds

Functional

attaviz.REFERENCE            # "#8A969F" — reference line color
attaviz.NO_DATA              # "#CED4DE" — missing-data fill
attaviz.TOTAL                # "#163C6C" — total/aggregate color
attaviz.SELECTION_PRIMARY    # "#0071BC" — active selection
attaviz.SELECTION_SECONDARY  # "#8963C1" — companion selection color
attaviz.TEXT                 # "#111111" — primary text color
attaviz.TEXT_SUBTLE          # "#666666" — subtle text color (captions)