Source code for ronswanson.utils.colormap_generator

import matplotlib.colors as mcolors
import numpy as np


[docs]def hex_to_rgb(value): ''' Converts hex to rgb colours value: string of 6 characters representing a hex colour. Returns: list length 3 of RGB values''' value = value.strip("#") # removes hash symbol if present lv = len(value) return tuple(int(value[i : i + lv // 3], 16) for i in range(0, lv, lv // 3))
[docs]def rgb_to_dec(value): ''' Converts rgb to decimal colours (i.e. divides each value by 256) value: list (length 3) of RGB values Returns: list (length 3) of decimal values''' return [v / 256 for v in value]
[docs]def get_continuous_cmap(hex_list, float_list=None): rgb_list = [rgb_to_dec(hex_to_rgb(i)) for i in hex_list] if float_list: pass else: float_list = list(np.linspace(0, 1, len(rgb_list))) cdict = dict() for num, col in enumerate(['red', 'green', 'blue']): col_list = [ [float_list[i], rgb_list[i][num], rgb_list[i][num]] for i in range(len(float_list)) ] cdict[col] = col_list cmp = mcolors.LinearSegmentedColormap('my_cmp', segmentdata=cdict, N=256) return cmp