/cblind

A colorblind-friendly python module that allows optimal color choice for plotting multiple curves

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

cblind

PyPI

A colorblind-friendly python module that allows color choice for plotting multiple curves
Works only with python $\geq$ 3.7
8 colormaps are now available to map 2D fields
Authors: Gaylor Wafflard-Fernandez, Clément Robert
Author-email: gaylor.wafflard@univ-grenoble-alpes.fr

Installation

Install with pip

pip install cblind

To import cblind:

import cblind as cb

Usage for plotting

10 palette functions to plot curves are available for now in the Colorplots class, with the corresponding test plotting functions.

cblind

color, linestyle = cb.Colorplots().cblind(nb_of_plots)

from 1 to 12 plots [DISTINCT COLORS]. For more than 12 plots, the linestyle is changed.

cb.test_cblind(nb_of_plots)

cblind

contrast

color, linestyle = cb.Colorplots().contrast(nb_of_plots)

for less than 4 contrast plots [DISTINCT COLORS]. For more than 12 plots, the linestyle is changed.

cb.test_contrast(nb_of_plots)

contrast

huescale

color, linestyle = cb.Colorplots().huescale(nb_of_plots, *option)

from 1 to 9 plots [SEQUENTIAL DATA]. With option "blue","bluegreen","green", "gold","brown","rose","purple" for less than 3 plots, otherwise ocherscale.

cb.test_huescale(nb_of_plots, *option)

huescale

rbscale

color, linestyle = cb.Colorplots().rbscale(nb_of_plots)

from 3 to 11 plots [DIVERGING DATA].

cb.test_rbscale(nb_of_plots)

rbscale

rainbow

color, linestyle = cb.Colorplots().rainbow(nb_of_plots)

from 4 to 12 plots [RAINBOW SCHEME].

cb.test_rainbow(nb_of_plots)

rainbow

extreme_rainbow

color, linestyle = cb.Colorplots().extreme_rainbow(nb_of_plots)

from 1 to 34 plots [RAINBOW SCHEME].

cb.test_extreme_rainbow(nb_of_plots)

extreme_rainbow

solstice

color, linestyle = cb.Colorplots().solstice(nb_of_plots)

for less than 11 plots [DIVERGING DATA]

cb.test_solstice(nb_of_plots)

solstice

bird

color, linestyle = cb.Colorplots().bird(nb_of_plots)

for less than 9 plots [DIVERGING DATA]

cb.test_bird(nb_of_plots)

bird

pregunta

color, linestyle = cb.Colorplots().pregunta(nb_of_plots)

for less than 9 plots [DIVERGING DATA]

cb.test_pregunta(nb_of_plots)

pregunta

monocolor

color, linestyle = cb.Colorplots().monocolor(nb_of_plots, *option)

from 1 to 13 monochromatic plots [MONOCOLOR/PRINTING] with different linestyles. With option "b&w", "blue", "red", "yellow", "green", "purple".

cb.test_monocolor(nb_of_plots, *option)

monocolor

Usage for colormaps

8 cblind palettes are available for now : "cb.rbscale", "cb.rainbow", "cb.extreme_rainbow", "cb.huescale", "cb.solstice", "cb.bird", "cb.pregunta", "cb.iris", but also all colormaps from matplotlib + "_r" variants for reverse colormaps.

cmap = cb.cbmap(palette, nbin)

The nbin argument is used to discretize the colormaps.

colormaps

To test the colormaps, you can try:

cb.test_mapping(palette, nbin)

Example with a field data2d

import numpy as np
import matplotlib.pyplot as plt
data2d = np.repeat(np.linspace(0,1,100),20).reshape(100,20).T

fig, ax = plt.subplots()
im = ax.imshow(data2d, cmap=cb.cbmap("cb.rainbow_r", nbin=10), aspect='auto')
fig.colorbar(im)
plt.show()

Basic mapping function

cb.mapping(fig,ax,data2d,extent,palette=palette,nbin=nbin)

REFERENCE
Paul Tol. 2012. "Colour Schemes." SRON Technical Note, SRON/EPS/TN/09-002.
https://personal.sron.nl/~pault/data/colourschemes.pdf