Victor Poughon

Every Perceptually Uniform Color Map as a CSS Gradient

Colormaps are functions that map from [0, 1] to colors. I love colormaps! Maybe a little too much? There is a huge amount of very serious color science behind colormaps, and also a great Python package called colorcet which implements a lot of them.

Would you ever need those as a CSS gradient? Probably not. Did I have fun writing a script to convert every 120 of them to a CSS gradient? Absolutely! Enjoy 😁

Note that these sample the actual colormap at N=101 points, and then your browser does linear interpolation to fill in the gaps. The actual colormaps are 255-entry tables. So not only is this horribly inefficient by using very verbose CSS syntax, it's also destroying a lot of the original colormap's information. This is just for fun, use the original data for anything serious.

Also, I excluded the categorical colormaps because they don't really make sense as a gradient.

Accent

Blues

BrBG

BuGn

BuPu

CMRmap

Dark2

GnBu

Greens

Grays / Greys

OrRd

Oranges

PRGn

Paired

Pastel1

Pastel2

PiYG

PuBu

PuBuGn

PuOr

PuRd

Purples

RdBu

RdGy

RdPu

RdYlBu

RdYlGn

Reds

Set1

Set2

Set3

Spectral

Wistia

YlGn

YlGnBu

YlOrBr

YlOrRd

afmhot

autumn

bgy

bgyw

binary

bjy

bkr

bky

blues

bmw

bmy

bone

brg

bwr

bwy

cet_CET_C1

cet_CET_C10

cet_CET_C10s

cet_CET_C11

cet_CET_C11s

cet_CET_C1s

cet_CET_C2

cet_CET_C2s

cet_CET_C3

cet_CET_C3s

cet_CET_C4

cet_CET_C4s

cet_CET_C5

cet_CET_C5s

cet_CET_C6

cet_CET_C6s

cet_CET_C7

cet_CET_C7s

cet_CET_C8

cet_CET_C8s

cet_CET_C9

cet_CET_C9s

cet_CET_CBC1

cet_CET_CBC2

cet_CET_CBD1

cet_CET_CBD2

cet_CET_CBL1

cet_CET_CBL2

cet_CET_CBL3

cet_CET_CBL4

cet_CET_CBTC1

cet_CET_CBTC2

cet_CET_CBTD1

cet_CET_CBTL1

cet_CET_CBTL2

cet_CET_CBTL3

cet_CET_CBTL4

cet_CET_D1

cet_CET_D10

cet_CET_D11

cet_CET_D12

cet_CET_D13

cet_CET_D1A

cet_CET_D2

cet_CET_D3

cet_CET_D4

cet_CET_D6

cet_CET_D7

cet_CET_D8

cet_CET_D9

cet_CET_I1

cet_CET_I2

cet_CET_I3

cet_CET_L1

cet_CET_L10

cet_CET_L11

cet_CET_L12

cet_CET_L13

cet_CET_L14

cet_CET_L15

cet_CET_L16

cet_CET_L17

cet_CET_L18

cet_CET_L19

cet_CET_L2

cet_CET_L20

cet_CET_L3

cet_CET_L4

cet_CET_L5

cet_CET_L6

cet_CET_L7

cet_CET_L8

cet_CET_L9

cet_CET_R1

cet_CET_R2

cet_CET_R3

cet_CET_R4

cet_bgy

cet_bgyw

cet_bjy

cet_bkr

cet_bky

cet_blues

cet_bmw

cet_bmy

cet_bwy

cet_circle_mgbm_67_c31

cet_circle_mgbm_67_c31_s25

cet_colorwheel

cet_coolwarm

cet_cwr

cet_cyclic_bgrmb_35_70_c75

cet_cyclic_bgrmb_35_70_c75_s25

cet_cyclic_grey_15_85_c0

cet_cyclic_grey_15_85_c0_s25

cet_cyclic_isoluminant

cet_cyclic_mrybm_35_75_c68

cet_cyclic_mrybm_35_75_c68_s25

cet_cyclic_mybm_20_100_c48

cet_cyclic_mybm_20_100_c48_s25

cet_cyclic_mygbm_30_95_c78

cet_cyclic_mygbm_30_95_c78_s25

cet_cyclic_mygbm_50_90_c46

cet_cyclic_mygbm_50_90_c46_s25

cet_cyclic_protanopic_deuteranopic_bwyk_16_96_c31

cet_cyclic_protanopic_deuteranopic_wywb_55_96_c33

cet_cyclic_rygcbmr_50_90_c64

cet_cyclic_rygcbmr_50_90_c64_s25

cet_cyclic_tritanopic_cwrk_40_100_c20

cet_cyclic_tritanopic_wrwc_70_100_c20

cet_cyclic_wrkbw_10_90_c43

cet_cyclic_wrkbw_10_90_c43_s25

cet_cyclic_wrwbw_40_90_c42

cet_cyclic_wrwbw_40_90_c42_s25

cet_cyclic_ymcgy_60_90_c67

cet_cyclic_ymcgy_60_90_c67_s25

cet_dimgray

cet_diverging_bkr_55_10_c35

cet_diverging_bky_60_10_c30

cet_diverging_bwg_20_95_c41

cet_diverging_bwr_20_95_c54

cet_diverging_bwr_40_95_c42

cet_diverging_bwr_55_98_c37

cet_diverging_cwm_80_100_c22

cet_diverging_gkr_60_10_c40

cet_diverging_gwr_55_95_c38

cet_diverging_gwv_55_95_c39

cet_diverging_isoluminant_cjm_75_c23

cet_diverging_isoluminant_cjm_75_c24

cet_diverging_isoluminant_cjo_70_c25

cet_diverging_linear_bjr_30_55_c53

cet_diverging_linear_bjy_30_90_c45

cet_diverging_linear_protanopic_deuteranopic_bjy_57_89_c34

cet_diverging_protanopic_deuteranopic_bwy_60_95_c32

cet_diverging_rainbow_bgymr_45_85_c67

cet_diverging_tritanopic_cwr_75_98_c20

cet_fire

cet_gouldian

cet_gray

cet_gwv

cet_isolum

cet_isoluminant_cgo_70_c39

cet_isoluminant_cgo_80_c38

cet_isoluminant_cm_70_c39

cet_kb

cet_kbc

cet_kbgyw

cet_kg

cet_kgy

cet_kr

cet_linear_bgy_10_95_c74

cet_linear_bgyw_15_100_c67

cet_linear_bgyw_15_100_c68

cet_linear_bgyw_20_98_c66

cet_linear_blue_5_95_c73

cet_linear_blue_95_50_c20

cet_linear_bmw_5_95_c86

cet_linear_bmw_5_95_c89

cet_linear_bmy_10_95_c71

cet_linear_bmy_10_95_c78

cet_linear_gow_60_85_c27

cet_linear_gow_65_90_c35

cet_linear_green_5_95_c69

cet_linear_grey_0_100_c0

cet_linear_grey_10_95_c0

cet_linear_kbc_5_95_c73

cet_linear_kbgoy_20_95_c57

cet_linear_kbgyw_10_98_c63

cet_linear_kbgyw_5_98_c62

cet_linear_kgy_5_95_c69

cet_linear_kry_0_97_c73

cet_linear_kry_5_95_c72

cet_linear_kry_5_98_c75

cet_linear_kryw_0_100_c71

cet_linear_kryw_5_100_c64

cet_linear_kryw_5_100_c67

cet_linear_protanopic_deuteranopic_kbjyw_5_95_c25

cet_linear_protanopic_deuteranopic_kbw_5_95_c34

cet_linear_protanopic_deuteranopic_kbw_5_98_c40

cet_linear_protanopic_deuteranopic_kyw_5_95_c49

cet_linear_ternary_blue_0_44_c57

cet_linear_ternary_green_0_46_c42

cet_linear_ternary_red_0_50_c52

cet_linear_tritanopic_kcw_5_95_c22

cet_linear_tritanopic_krjcw_5_95_c24

cet_linear_tritanopic_krjcw_5_98_c46

cet_linear_tritanopic_krw_5_95_c46

cet_linear_wcmr_100_45_c42

cet_linear_worb_100_25_c53

cet_linear_wyor_100_45_c55

cet_rainbow

cet_rainbow4

cet_rainbow_bgyr_10_90_c83

cet_rainbow_bgyr_35_85_c72

cet_rainbow_bgyr_35_85_c73

cet_rainbow_bgyrm_35_85_c69

cet_rainbow_bgyrm_35_85_c71

CET_C10 / circle_mgbm_67_c31

CET_C10s / circle_mgbm_67_c31_s25

cividis

colorwheel

cool

coolwarm

copper

cubehelix

cwr

CET_C11 / cyclic_bgrmb_35_70_c75

CET_C11s / cyclic_bgrmb_35_70_c75_s25

CET_C5 / cyclic_grey_15_85_c0

CET_C5s / cyclic_grey_15_85_c0_s25

cyclic_isoluminant

CET_C1 / cyclic_mrybm_35_75_c68

CET_C1s / cyclic_mrybm_35_75_c68_s25

CET_C9 / cyclic_mybm_20_100_c48

CET_C9s / cyclic_mybm_20_100_c48_s25

CET_C2 / cyclic_mygbm_30_95_c78

CET_C2s / cyclic_mygbm_30_95_c78_s25

CET_C8 / cyclic_mygbm_50_90_c46

CET_C8s / cyclic_mygbm_50_90_c46_s25

CET_CBC1 / cyclic_protanopic_deuteranopic_bwyk_16_96_c31

CET_CBC2 / cyclic_protanopic_deuteranopic_wywb_55_96_c33

CET_C6 / cyclic_rygcbmr_50_90_c64

CET_C6s / cyclic_rygcbmr_50_90_c64_s25

CET_CBTC1 / cyclic_tritanopic_cwrk_40_100_c20

CET_CBTC2 / cyclic_tritanopic_wrwc_70_100_c20

CET_C3 / cyclic_wrkbw_10_90_c43

CET_C3s / cyclic_wrkbw_10_90_c43_s25

CET_C4 / cyclic_wrwbw_40_90_c42

CET_C4s / cyclic_wrwbw_40_90_c42_s25

CET_C7 / cyclic_ymcgy_60_90_c67

CET_C7s / cyclic_ymcgy_60_90_c67_s25

dimgray

CET_D4 / diverging_bkr_55_10_c35

CET_D6 / diverging_bky_60_10_c30

CET_D13 / diverging_bwg_20_95_c41

CET_D1A / diverging_bwr_20_95_c54

CET_D1 / diverging_bwr_40_95_c42

CET_D9 / diverging_bwr_55_98_c37

CET_D10 / diverging_cwm_80_100_c22

diverging_gkr_60_10_c40

CET_D3 / diverging_gwr_55_95_c38

CET_D2 / diverging_gwv_55_95_c39

CET_D12 / diverging_isoluminant_cjm_75_c23

diverging_isoluminant_cjm_75_c24

CET_D11 / diverging_isoluminant_cjo_70_c25

CET_D8 / diverging_linear_bjr_30_55_c53

CET_D7 / diverging_linear_bjy_30_90_c45

CET_CBD2 / diverging_linear_protanopic_deuteranopic_bjy_57_89_c34

CET_CBD1 / diverging_protanopic_deuteranopic_bwy_60_95_c32

CET_R3 / diverging_rainbow_bgymr_45_85_c67

CET_CBTD1 / diverging_tritanopic_cwr_75_98_c20

fire

flag

gist_earth

gist_gray / gist_grey

gist_heat

gist_ncar

gist_rainbow

gist_stern

gist_yarg / gist_yerg

gnuplot

gnuplot2

gouldian

gray / grey

gwv

hot

hsv

inferno

isolum

CET_I1 / isoluminant_cgo_70_c39

CET_I2 / isoluminant_cgo_80_c38

CET_I3 / isoluminant_cm_70_c39

jet

kb

kbc

kbgyw

kg

kgy

kr

linear_bgy_10_95_c74

linear_bgyw_15_100_c67

linear_bgyw_15_100_c68

CET_L9 / linear_bgyw_20_98_c66

linear_blue_5_95_c73

CET_L12 / linear_blue_95_50_c20

CET_L7 / linear_bmw_5_95_c86

linear_bmw_5_95_c89

CET_L8 / linear_bmy_10_95_c71

linear_bmy_10_95_c78

CET_L10 / linear_gow_60_85_c27

CET_L11 / linear_gow_65_90_c35

linear_green_5_95_c69

CET_L1 / linear_grey_0_100_c0

CET_L2 / linear_grey_10_95_c0

CET_L6 / linear_kbc_5_95_c73

CET_L20 / linear_kbgoy_20_95_c57

linear_kbgyw_10_98_c63

CET_L16 / linear_kbgyw_5_98_c62

CET_L5 / linear_kgy_5_95_c69

CET_L4 / linear_kry_0_97_c73

linear_kry_5_95_c72

linear_kry_5_98_c75

CET_L3 / linear_kryw_0_100_c71

linear_kryw_5_100_c64

linear_kryw_5_100_c67

CET_CBL1 / linear_protanopic_deuteranopic_kbjyw_5_95_c25

CET_CBL3 / linear_protanopic_deuteranopic_kbw_5_95_c34

CET_CBL2 / linear_protanopic_deuteranopic_kbw_5_98_c40

CET_CBL4 / linear_protanopic_deuteranopic_kyw_5_95_c49

CET_L15 / linear_ternary_blue_0_44_c57

CET_L14 / linear_ternary_green_0_46_c42

CET_L13 / linear_ternary_red_0_50_c52

CET_CBTL3 / linear_tritanopic_kcw_5_95_c22

CET_CBTL2 / linear_tritanopic_krjcw_5_95_c24

CET_CBTL1 / linear_tritanopic_krjcw_5_98_c46

CET_CBTL4 / linear_tritanopic_krw_5_95_c46

CET_L19 / linear_wcmr_100_45_c42

CET_L17 / linear_worb_100_25_c53

CET_L18 / linear_wyor_100_45_c55

magma

nipy_spectral

ocean

pink

plasma

prism

rainbow

rainbow4

CET_R4 / rainbow_bgyr_10_90_c83

CET_R2 / rainbow_bgyr_35_85_c72

rainbow_bgyr_35_85_c73

CET_R1 / rainbow_bgyrm_35_85_c69

rainbow_bgyrm_35_85_c71

seismic

spring

summer

tab10

tab20

tab20b

tab20c

terrain

turbo

twilight

twilight_shifted

viridis

winter