Skip to content

Instantly share code, notes, and snippets.

@thriveth
Created January 22, 2014 14:52
Show Gist options
  • Select an option

  • Save thriveth/8560036 to your computer and use it in GitHub Desktop.

Select an option

Save thriveth/8560036 to your computer and use it in GitHub Desktop.
A color blind/friendly color cycle for Matplotlib line plots. Might want to shuffle it around a bit more,but already not it gives kinda good contrasts between subsequent colors, and shows reasonably well in colorblind filters (though not in pure monochrome).
CB_color_cycle = ['#377eb8', '#ff7f00', '#4daf4a',
'#f781bf', '#a65628', '#984ea3',
'#999999', '#e41a1c', '#dede00']
@swharden

swharden commented Jul 4, 2018

Copy link
Copy Markdown

As a colorblind person, I love this list!

@JonasBauer

Copy link
Copy Markdown

Wonderful colors, from now on I'll use them for my plots. Thanks!

@Pit-Storm

Copy link
Copy Markdown

They are very great!

Would be nice to have some more :-) How did you choose them?

@Morwenn

Morwenn commented Mar 27, 2021

Copy link
Copy Markdown

Same, I wouldn't say no to a bigger palette, I regularly need just a few more colours (around 12).

@tsherwen

tsherwen commented Aug 3, 2021

Copy link
Copy Markdown

In case anyone seeing this thread wondered what the colours look like, below is a quick plot of them.

Thanks @thriveth, your colour cycle has been very useful in my work.

CB_colour_blind_rotation

@scottfleming

Copy link
Copy Markdown

And if you want to convert to rgba for e.g., plotly, here are the rgb values:

opacity = 0.5
colors = {
    'blue':   [55,  126, 184],  #377eb8 
    'orange': [255, 127, 0],    #ff7f00
    'green':  [77,  175, 74],   #4daf4a
    'pink':   [247, 129, 191],  #f781bf
    'brown':  [166, 86,  40],   #a65628
    'purple': [152, 78,  163],  #984ea3
    'gray':   [153, 153, 153],  #999999
    'red':    [228, 26,  28],   #e41a1c
    'yellow': [222, 222, 0]     #dede00
}  
c_str = {k:f'rgba({v[0]},{v[1]},{v[2]},{opacity})'
         for (k, v) in colors.items()}
c_str['yellow']  # Gives the rgba string for 'yellow'

@Hexanders

Hexanders commented Feb 11, 2023 •

Copy link
Copy Markdown

Sometimes it is handy to have the list with colors also for matplotlib. If you want to color one plot by hand.


colors = {
    'blue':    '#377eb8', 
    'orange':  '#ff7f00',
    'green':   '#4daf4a',
    'pink':    '#f781bf',
    'brown':   '#a65628',
    'purple':  '#984ea3',
    'gray':    '#999999',
    'red':     '#e41a1c',
    'yellow':  '#dede00'
} 
 

@swharden

Copy link
Copy Markdown

Note that this list describes "category-10"

image

... and there is a related list with 20 unique colors

image

@Hexanders

Copy link
Copy Markdown

Funny enough: matplotlib has already implemented the category10 color as a standard mode in version 2.0.

however if you do something like this:

matplotlib.pyplot.plot(x,y, color = 'blue')

the old basic color will be used. So beware. New notation of category10 is as shown here:

matplotlib.pyplot.plot(x,y, color = 'C0')

Just for the sake of completeness in case someone stumbles over this old question like I did today.
Thanks for your answer @swharden , without it I wouldn't know category10 colors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment