1. 程式人生 > >Python: matplotlib模組 原始碼閱讀&理解

Python: matplotlib模組 原始碼閱讀&理解

  在寫如下程式碼的時候,matplotlib模組引起了我的興趣。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import matplotlib as mpl
import matplotlib.cm
import matplotlib.colors

def color_image(image, num_classes=20):

    norm = mpl.colors.Normalize(vmin=0., vmax=num_classes)
    mycm = mpl.cm.get_cmap('coolwarm')
    return mycm(norm(image))

  因為想進一步瞭解該模組的使用,我開始閱讀matplotlib模組對應的實現原始碼。matplotlib模組實現原始碼的位置在 ./anaconda2/lib/python2.7/site-packages/matplotlib/cm.py

"""
Nothing here but dictionaries for generating LinearSegmentedColormaps,
and a dictionary of these dictionaries.

Documentation for each is in pyplot.colormaps()
"""

from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

import numpy as np

_binary_data = {
    'red':    ((0., 1., 1.), (1., 0., 0.)),
    'green':  ((0., 1., 1.), (1., 0., 0.)),
    'blue':   ((0., 1., 1.), (1., 0., 0.))
    }

_autumn_data = {'red':   ((0., 1.0, 1.0), (1.0, 1.0, 1.0)),
                'green': ((0., 0., 0.), (1.0, 1.0, 1.0)),
                'blue':  ((0., 0., 0.), (1.0, 0., 0.))}

_bone_data = {'red':   ((0., 0., 0.),
                        (0.746032, 0.652778, 0.652778),
                        (1.0, 1.0, 1.0)),
              'green': ((0., 0., 0.),
                        (0.365079, 0.319444, 0.319444),
                        (0.746032, 0.777778, 0.777778),
                        (1.0, 1.0, 1.0)),
              'blue':  ((0., 0., 0.),
                        (0.365079, 0.444444, 0.444444),
                        (1.0, 1.0, 1.0))}

_cool_data = {'red':   ((0., 0., 0.), (1.0, 1.0, 1.0)),
              'green': ((0., 1., 1.), (1.0, 0.,  0.)),
              'blue':  ((0., 1., 1.), (1.0, 1.,  1.))}

_copper_data = {'red':   ((0., 0., 0.),
                          (0.809524, 1.000000, 1.000000),
                          (1.0, 1.0, 1.0)),
                'green': ((0., 0., 0.),
                          (1.0, 0.7812, 0.7812)),
                'blue':  ((0., 0., 0.),
                          (1.0, 0.4975, 0.4975))}

_flag_data = {
        'red': lambda x: 0.75 * np.sin((x * 31.5 + 0.25) * np.pi) + 0.5,
        'green': lambda x: np.sin(x * 31.5 * np.pi),
        'blue': lambda x: 0.75 * np.sin((x * 31.5 - 0.25) * np.pi) + 0.5,
}

_prism_data = {
        'red': lambda x: 0.75 * np.sin((x * 20.9 + 0.25) * np.pi) + 0.67,
        'green': lambda x: 0.75 * np.sin((x * 20.9 - 0.25) * np.pi) + 0.33,
        'blue': lambda x: -1.1 * np.sin((x * 20.9) * np.pi),
}


def cubehelix(gamma=1.0, s=0.5, r=-1.5, h=1.0):
    """Return custom data dictionary of (r,g,b) conversion functions, which
    can be used with :func:`register_cmap`, for the cubehelix color scheme.

    Unlike most other color schemes cubehelix was designed by D.A. Green to
    be monotonically increasing in terms of perceived brightness.
    Also, when printed on a black and white postscript printer, the scheme
    results in a greyscale with monotonically increasing brightness.
    This color scheme is named cubehelix because the r,g,b values produced
    can be visualised as a squashed helix around the diagonal in the
    r,g,b color cube.

    For a unit color cube (i.e. 3-D coordinates for r,g,b each in the
    range 0 to 1) the color scheme starts at (r,g,b) = (0,0,0), i.e. black,
    and finishes at (r,g,b) = (1,1,1), i.e. white. For some fraction *x*,
    between 0 and 1, the color is the corresponding grey value at that
    fraction along the black to white diagonal (x,x,x) plus a color
    element. This color element is calculated in a plane of constant
    perceived intensity and controlled by the following parameters.

    Optional keyword arguments:

      =========   =======================================================
      Keyword     Description
      =========   =======================================================
      gamma       gamma factor to emphasise either low intensity values
                  (gamma < 1), or high intensity values (gamma > 1);
                  defaults to 1.0.
      s           the start color; defaults to 0.5 (i.e. purple).
      r           the number of r,g,b rotations in color that are made
                  from the start to the end of the color scheme; defaults
                  to -1.5 (i.e. -> B -> G -> R -> B).
      h           the hue parameter which controls how saturated the
                  colors are. If this parameter is zero then the color
                  scheme is purely a greyscale; defaults to 1.0.
      =========   =======================================================

    """

    def get_color_function(p0, p1):

        def color(x):
            # Apply gamma factor to emphasise low or high intensity values
            xg = x ** gamma

            # Calculate amplitude and angle of deviation from the black
            # to white diagonal in the plane of constant
            # perceived intensity.
            a = h * xg * (1 - xg) / 2

            phi = 2 * np.pi * (s / 3 + r * x)

            return xg + a * (p0 * np.cos(phi) + p1 * np.sin(phi))
        return color

    return {
            'red': get_color_function(-0.14861, 1.78277),
            'green': get_color_function(-0.29227, -0.90649),
            'blue': get_color_function(1.97294, 0.0),
    }

_cubehelix_data = cubehelix()

_bwr_data = ((0.0, 0.0, 1.0), (1.0, 1.0, 1.0), (1.0, 0.0, 0.0))
_brg_data = ((0.0, 0.0, 1.0), (1.0, 0.0, 0.0), (0.0, 1.0, 0.0))

# Gnuplot palette functions
gfunc = {
        0: lambda x: 0,
        1: lambda x: 0.5,
        2: lambda x: 1,
        3: lambda x: x,
        4: lambda x: x ** 2,
        5: lambda x: x ** 3,
        6: lambda x: x ** 4,
        7: lambda x: np.sqrt(x),
        8: lambda x: np.sqrt(np.sqrt(x)),
        9: lambda x: np.sin(x * np.pi / 2),
        10: lambda x: np.cos(x * np.pi / 2),
        11: lambda x: np.abs(x - 0.5),
        12: lambda x: (2 * x - 1) ** 2,
        13: lambda x: np.sin(x * np.pi),
        14: lambda x: np.abs(np.cos(x * np.pi)),
        15: lambda x: np.sin(x * 2 * np.pi),
        16: lambda x: np.cos(x * 2 * np.pi),
        17: lambda x: np.abs(np.sin(x * 2 * np.pi)),
        18: lambda x: np.abs(np.cos(x * 2 * np.pi)),
        19: lambda x: np.abs(np.sin(x * 4 * np.pi)),
        20: lambda x: np.abs(np.cos(x * 4 * np.pi)),
        21: lambda x: 3 * x,
        22: lambda x: 3 * x - 1,
        23: lambda x: 3 * x - 2,
        24: lambda x: np.abs(3 * x - 1),
        25: lambda x: np.abs(3 * x - 2),
        26: lambda x: (3 * x - 1) / 2,
        27: lambda x: (3 * x - 2) / 2,
        28: lambda x: np.abs((3 * x - 1) / 2),
        29: lambda x: np.abs((3 * x - 2) / 2),
        30: lambda x: x / 0.32 - 0.78125,
        31: lambda x: 2 * x - 0.84,
        32: lambda x: gfunc32(x),
        33: lambda x: np.abs(2 * x - 0.5),
        34: lambda x: 2 * x,
        35: lambda x: 2 * x - 0.5,
        36: lambda x: 2 * x - 1.
}


def gfunc32(x):
    ret = np.zeros(len(x))
    m = (x < 0.25)
    ret[m] = 4 * x[m]
    m = (x >= 0.25) & (x < 0.92)
    ret[m] = -2 * x[m] + 1.84
    m = (x >= 0.92)
    ret[m] = x[m] / 0.08 - 11.5
    return ret

_gnuplot_data = {
        'red': gfunc[7],
        'green': gfunc[5],
        'blue': gfunc[15],
}

_gnuplot2_data = {
        'red': gfunc[30],
        'green': gfunc[31],
        'blue': gfunc[32],
}

_ocean_data = {
        'red': gfunc[23],
        'green': gfunc[28],
        'blue': gfunc[3],
}

_afmhot_data = {
        'red': gfunc[34],
        'green': gfunc[35],
        'blue': gfunc[36],
}

_rainbow_data = {
        'red': gfunc[33],
        'green': gfunc[13],
        'blue': gfunc[10],
}

_seismic_data = (
        (0.0, 0.0, 0.3), (0.0, 0.0, 1.0),
        (1.0, 1.0, 1.0), (1.0, 0.0, 0.0),
        (0.5, 0.0, 0.0))

_terrain_data = (
        (0.00, (0.2, 0.2, 0.6)),
        (0.15, (0.0, 0.6, 1.0)),
        (0.25, (0.0, 0.8, 0.4)),
        (0.50, (1.0, 1.0, 0.6)),
        (0.75, (0.5, 0.36, 0.33)),
        (1.00, (1.0, 1.0, 1.0)))

_gray_data = {'red':   ((0., 0, 0), (1., 1, 1)),
              'green': ((0., 0, 0), (1., 1, 1)),
              'blue':  ((0., 0, 0), (1., 1, 1))}

_hot_data = {'red':   ((0., 0.0416, 0.0416),
                       (0.365079, 1.000000, 1.000000),
                       (1.0, 1.0, 1.0)),
             'green': ((0., 0., 0.),
                       (0.365079, 0.000000, 0.000000),
                       (0.746032, 1.000000, 1.000000),
                       (1.0, 1.0, 1.0)),
             'blue':  ((0., 0., 0.),
                       (0.746032, 0.000000, 0.000000),
                       (1.0, 1.0, 1.0))}

_hsv_data = {'red':   ((0., 1., 1.),
                       (0.158730, 1.000000, 1.000000),
                       (0.174603, 0.968750, 0.968750),
                       (0.333333, 0.031250, 0.031250),
                       (0.349206, 0.000000, 0.000000),
                       (0.666667, 0.000000, 0.000000),
                       (0.682540, 0.031250, 0.031250),
                       (0.841270, 0.968750, 0.968750),
                       (0.857143, 1.000000, 1.000000),
                       (1.0, 1.0, 1.0)),
             'green': ((0., 0., 0.),
                       (0.158730, 0.937500, 0.937500),
                       (0.174603, 1.000000, 1.000000),
                       (0.507937, 1.000000, 1.000000),
                       (0.666667, 0.062500, 0.062500),
                       (0.682540, 0.000000, 0.000000),
                       (1.0, 0., 0.)),
             'blue':  ((0., 0., 0.),
                       (0.333333, 0.000000, 0.000000),
                       (0.349206, 0.062500, 0.062500),
                       (0.507937, 1.000000, 1.000000),
                       (0.841270, 1.000000, 1.000000),
                       (0.857143, 0.937500, 0.937500),
                       (1.0, 0.09375, 0.09375))}

_jet_data = {'red':   ((0., 0, 0), (0.35, 0, 0), (0.66, 1, 1), (0.89, 1, 1),
                         (1, 0.5, 0.5)),
             'green': ((0., 0, 0), (0.125, 0, 0), (0.375, 1, 1), (0.64, 1, 1),
                         (0.91, 0, 0), (1, 0, 0)),
             'blue':  ((0., 0.5, 0.5), (0.11, 1, 1), (0.34, 1, 1),
                         (0.65, 0, 0), (1, 0, 0))}

_pink_data = {'red':   ((0., 0.1178, 0.1178), (0.015873, 0.195857, 0.195857),
                        (0.031746, 0.250661, 0.250661),
                        (0.047619, 0.295468, 0.295468),
                        (0.063492, 0.334324, 0.334324),
                        (0.079365, 0.369112, 0.369112),
                        (0.095238, 0.400892, 0.400892),
                        (0.111111, 0.430331, 0.430331),
                        (0.126984, 0.457882, 0.457882),
                        (0.142857, 0.483867, 0.483867),
                        (0.158730, 0.508525, 0.508525),
                        (0.174603, 0.532042, 0.532042),
                        (0.190476, 0.554563, 0.554563),
                        (0.206349, 0.576204, 0.576204),
                        (0.222222, 0.597061, 0.597061),
                        (0.238095, 0.617213, 0.617213),
                        (0.253968, 0.636729, 0.636729),
                        (0.269841, 0.655663, 0.655663),
                        (0.285714, 0.674066, 0.674066),
                        (0.301587, 0.691980, 0.691980),
                        (0.317460, 0.709441, 0.709441),
                        (0.333333, 0.726483, 0.726483),
                        (0.349206, 0.743134, 0.743134),
                        (0.365079, 0.759421, 0.759421),
                        (0.380952, 0.766356, 0.766356),
                        (0.396825, 0.773229, 0.773229),
                        (0.412698, 0.780042, 0.780042),
                        (0.428571, 0.786796, 0.786796),
                        (0.444444, 0.793492, 0.793492),
                        (0.460317, 0.800132, 0.800132),
                        (0.476190, 0.806718, 0.806718),
                        (0.492063, 0.813250, 0.813250),
                        (0.507937, 0.819730, 0.819730),
                        (0.523810, 0.826160, 0.826160),
                        (0.539683, 0.832539, 0.832539),
                        (0.555556, 0.838870, 0.838870),
                        (0.571429, 0.845154, 0.845154),
                        (0.587302, 0.851392, 0.851392),
                        (0.603175, 0.857584, 0.857584),
                        (0.619048, 0.863731, 0.863731),
                        (0.634921, 0.869835, 0.869835),
                        (0.650794, 0.875897, 0.875897),
                        (0.666667, 0.881917, 0.881917),
                        (0.682540, 0.887896, 0.887896),
                        (0.698413, 0.893835, 0.893835),
                        (0.714286, 0.899735, 0.899735),
                        (0.730159, 0.905597, 0.905597),
                        (0.746032, 0.911421, 0.911421),
                        (0.761905, 0.917208, 0.917208),
                        (0.777778, 0.922958, 0.922958),
                        (0.793651, 0.928673, 0.928673),
                        (0.809524, 0.934353, 0.934353),
                        (0.825397, 0.939999, 0.939999),
                        (0.841270, 0.945611, 0.945611),
                        (0.857143, 0.951190, 0.951190),
                        (0.873016, 0.956736, 0.956736),
                        (0.888889, 0.962250, 0.962250),
                        (0.904762, 0.967733, 0.967733),
                        (0.920635, 0.973185, 0.973185),
                        (0.936508, 0.978607, 0.978607),
                        (0.952381, 0.983999, 0.983999),
                        (0.968254, 0.989361, 0.989361),
                        (0.984127, 0.994695, 0.994695), (1.0, 1.0, 1.0)),
              'green': ((0., 0., 0.), (0.015873, 0.102869, 0.102869),
                        (0.031746, 0.145479, 0.145479),
                        (0.047619, 0.178174, 0.178174),
                        (0.063492, 0.205738, 0.205738),
                        (0.079365, 0.230022, 0.230022),
                        (0.095238, 0.251976, 0.251976),
                        (0.111111, 0.272166, 0.272166),
                        (0.126984, 0.290957, 0.290957),
                        (0.142857, 0.308607, 0.308607),
                        (0.158730, 0.325300, 0.325300),
                        (0.174603, 0.341178, 0.341178),
                        (0.190476, 0.356348, 0.356348),
                        (0.206349, 0.370899, 0.370899),
                        (0.222222, 0.384900, 0.384900),
                        (0.238095, 0.398410, 0.398410),
                        (0.253968, 0.411476, 0.411476),
                        (0.269841, 0.424139, 0.424139),
                        (0.285714, 0.436436, 0.436436),
                        (0.301587, 0.448395, 0.448395),
                        (0.317460, 0.460044, 0.460044),
                        (0.333333, 0.471405, 0.471405),
                        (0.349206, 0.482498, 0.482498),
                        (0.365079, 0.493342, 0.493342),
                        (0.380952, 0.517549, 0.517549),
                        (0.396825, 0.540674, 0.540674),
                        (0.412698, 0.562849, 0.562849),
                        (0.428571, 0.584183, 0.584183),
                        (0.444444, 0.604765, 0.604765),
                        (0.460317, 0.624669, 0.624669),
                        (0.476190, 0.643958, 0.643958),
                        (0.492063, 0.662687, 0.662687),
                        (0.507937, 0.680900, 0.680900),
                        (0.523810, 0.698638, 0.698638),
                        (0.539683, 0.715937, 0.715937),
                        (0.555556, 0.732828, 0.732828),
                        (0.571429, 0.749338, 0.749338),
                        (0.587302, 0.765493, 0.765493),
                        (0.603175, 0.781313, 0.781313),
                        (0.619048, 0.796819, 0.796819),
                        (0.634921, 0.812029, 0.812029),
                        (0.650794, 0.826960, 0.826960),
                        (0.666667, 0.841625, 0.841625),
                        (0.682540, 0.856040, 0.856040),
                        (0.698413, 0.870216, 0.870216),
                        (0.714286, 0.884164, 0.884164),
                        (0.730159, 0.897896, 0.897896),
                        (0.746032, 0.911421, 0.911421),
                        (0.761905, 0.917208, 0.917208),
                        (0.777778, 0.922958, 0.922958),
                        (0.793651, 0.928673, 0.928673),
                        (0.809524, 0.934353, 0.934353),
                        (0.825397, 0.939999, 0.939999),
                        (0.841270, 0.945611, 0.945611),
                        (0.857143, 0.951190, 0.951190),
                        (0.873016, 0.956736, 0.956736),
                        (0.888889, 0.962250, 0.962250),
                        (0.904762, 0.967733, 0.967733),
                        (0.920635, 0.973185, 0.973185),
                        (0.936508, 0.978607, 0.978607),
                        (0.952381, 0.983999, 0.983999),
                        (0.968254, 0.989361, 0.989361),
                        (0.984127, 0.994695, 0.994695), (1.0, 1.0, 1.0)),
              'blue':  ((0., 0., 0.), (0.015873, 0.102869, 0.102869),
                        (0.031746, 0.145479, 0.145479),
                        (0.047619, 0.178174, 0.178174),
                        (0.063492, 0.205738, 0.205738),
                        (0.079365, 0.230022, 0.230022),
                        (0.095238, 0.251976, 0.251976),
                        (0.111111, 0.272166, 0.272166),
                        (0.126984, 0.290957, 0.290957),
                        (0.142857, 0.308607, 0.308607),
                        (0.158730, 0.325300, 0.325300),
                        (0.174603, 0.341178, 0.341178),
                        (0.190476, 0.356348, 0.356348),
                        (0.206349, 0.370899, 0.370899),
                        (0.222222, 0.384900, 0.384900),
                        (0.238095, 0.398410, 0.398410),
                        (0.253968, 0.411476, 0.411476),
                        (0.269841, 0.424139, 0.424139),
                        (0.285714, 0.436436, 0.436436),
                        (0.301587, 0.448395, 0.448395),
                        (0.317460, 0.460044, 0.460044),
                        (0.333333, 0.471405, 0.471405),
                        (0.349206, 0.482498, 0.482498),
                        (0.365079, 0.493342, 0.493342),
                        (0.380952, 0.503953, 0.503953),
                        (0.396825, 0.514344, 0.514344),
                        (0.412698, 0.524531, 0.524531),
                        (0.428571, 0.534522, 0.534522),
                        (0.444444, 0.544331, 0.544331),
                        (0.460317, 0.553966, 0.553966),
                        (0.476190, 0.563436, 0.563436),
                        (0.492063, 0.572750, 0.572750),
                        (0.507937, 0.581914, 0.581914),
                        (0.523810, 0.590937, 0.590937),
                        (0.539683, 0.599824, 0.599824),
                        (0.555556, 0.608581, 0.608581),
                        (0.571429, 0.617213, 0.617213),
                        (0.587302, 0.625727, 0.625727),
                        (0.603175, 0.634126, 0.634126),
                        (0.619048, 0.642416, 0.642416),
                        (0.634921, 0.650600, 0.650600),
                        (0.650794, 0.658682, 0.658682),
                        (0.666667, 0.666667, 0.666667),
                        (0.682540, 0.674556, 0.674556),
                        (0.698413, 0.682355, 0.682355),
                        (0.714286, 0.690066, 0.690066),
                        (0.730159, 0.697691, 0.697691),
                        (0.746032, 0.705234, 0.705234),
                        (0.761905, 0.727166, 0.727166),
                        (0.777778, 0.748455, 0.748455),
                        (0.793651, 0.769156, 0.769156),
                        (0.809524, 0.789314, 0.789314),
                        (0.825397, 0.808969, 0.808969),
                        (0.841270, 0.828159, 0.828159),
                        (0.857143, 0.846913, 0.846913),
                        (0.873016, 0.865261, 0.865261),
                        (0.888889, 0.883229, 0.883229),
                        (0.904762, 0.900837, 0.900837),
                        (0.920635, 0.918109, 0.918109),
                        (0.936508, 0.935061, 0.935061),
                        (0.952381, 0.951711, 0.951711),
                        (0.968254, 0.968075, 0.968075),
                        (0.984127, 0.984167, 0.984167), (1.0, 1.0, 1.0))}

_spring_data = {'red':   ((0., 1., 1.), (1.0, 1.0, 1.0)),
                'green': ((0., 0., 0.), (1.0, 1.0, 1.0)),
                'blue':  ((0., 1., 1.), (1.0, 0.0, 0.0))}


_summer_data = {'red':   ((0., 0., 0.), (1.0, 1.0, 1.0)),
                'green': ((0., 0.5, 0.5), (1.0, 1.0, 1.0)),
                'blue':  ((0., 0.4, 0.4), (1.0, 0.4, 0.4))}


_winter_data = {'red':   ((0., 0., 0.), (1.0, 0.0, 0.0)),
                'green': ((0., 0., 0.), (1.0, 1.0, 1.0)),
                'blue':  ((0., 1., 1.), (1.0, 0.5, 0.5))}

_nipy_spectral_data = {
      'red': [(0.0, 0.0, 0.0), (0.05, 0.4667, 0.4667),
              (0.10, 0.5333, 0.5333), (0.15, 0.0, 0.0),
              (0.20, 0.0, 0.0), (0.25, 0.0, 0.0),
              (0.30, 0.0, 0.0), (0.35, 0.0, 0.0),
              (0.40, 0.0, 0.0), (0.45, 0.0, 0.0),
              (0.50, 0.0, 0.0), (0.55, 0.0, 0.0),
              (0.60, 0.0, 0.0), (0.65, 0.7333, 0.7333),
              (0.70, 0.9333, 0.9333), (0.75, 1.0, 1.0),
              (0.80, 1.0, 1.0), (0.85, 1.0, 1.0),
              (0.90, 0.8667, 0.8667), (0.95, 0.80, 0.80),
              (1.0, 0.80, 0.80)],
    'green': [(0.0, 0.0, 0.0), (0.05, 0.0, 0.0),
              (0.10, 0.0, 0.0), (0.15, 0.0, 0.0),
              (0.20, 0.0, 0.0), (0.25, 0.4667, 0.4667),
              (0.30, 0.6000, 0.6000), (0.35, 0.6667, 0.6667),
              (0.40, 0.6667, 0.6667), (0.45, 0.6000, 0.6000),
              (0.50, 0.7333, 0.7333), (0.55, 0.8667, 0.8667),
              (0.60, 1.0, 1.0), (0.65, 1.0, 1.0),
              (0.70, 0.9333, 0.9333), (0.75, 0.8000, 0.8000),
              (0.80, 0.6000, 0.6000), (0.85, 0.0, 0.0),
              (0.90, 0.0, 0.0), (0.95, 0.0, 0.0),
              (1.0, 0.80, 0.80)],
     'blue': [(0.0, 0.0, 0.0), (0.05, 0.5333, 0.5333),
              (0.10, 0.6000, 0.6000), (0.15, 0.6667, 0.6667),
              (0.20, 0.8667, 0.8667), (0.25, 0.8667, 0.8667),
              (0.30, 0.8667, 0.8667), (0.35, 0.6667, 0.6667),
              (0.40, 0.5333, 0.5333), (0.45, 0.0, 0.0),
              (0.5, 0.0, 0.0), (0.55, 0.0, 0.0),
              (0.60, 0.0, 0.0), (0.65, 0.0, 0.0),
              (0.70, 0.0, 0.0), (0.75, 0.0, 0.0),
              (0.80, 0.0, 0.0), (0.85, 0.0, 0.0),
              (0.90, 0.0, 0.0), (0.95, 0.0, 0.0),
              (1.0, 0.80, 0.80)],
}


# 34 colormaps based on color specifications and designs
# developed by Cynthia Brewer (http://colorbrewer.org).
# The ColorBrewer palettes have been included under the terms
# of an Apache-stype license (for details, see the file
# LICENSE_COLORBREWER in the license directory of the matplotlib
# source distribution).

_Accent_data = {'blue': [(0.0, 0.49803921580314636,
0.49803921580314636), (0.14285714285714285, 0.83137255907058716,
0.83137255907058716), (0.2857142857142857, 0.52549022436141968,
0.52549022436141968), (0.42857142857142855, 0.60000002384185791,
0.60000002384185791), (0.5714285714285714, 0.69019609689712524,
0.69019609689712524), (0.7142857142857143, 0.49803921580314636,
0.49803921580314636), (0.8571428571428571, 0.090196080505847931,
0.090196080505847931), (1.0, 0.40000000596046448,
0.40000000596046448)],

    'green': [(0.0, 0.78823530673980713, 0.78823530673980713),
    (0.14285714285714285, 0.68235296010971069, 0.68235296010971069),
    (0.2857142857142857, 0.75294119119644165, 0.75294119119644165),
    (0.42857142857142855, 1.0, 1.0), (0.5714285714285714,
    0.42352941632270813, 0.42352941632270813), (0.7142857142857143,
    0.0078431377187371254, 0.0078431377187371254),
    (0.8571428571428571, 0.35686275362968445, 0.35686275362968445),
    (1.0, 0.40000000596046448, 0.40000000596046448)],

    'red': [(0.0, 0.49803921580314636, 0.49803921580314636),
    (0.14285714285714285, 0.7450980544090271, 0.7450980544090271),
    (0.2857142857142857, 0.99215686321258545, 0.99215686321258545),
    (0.42857142857142855, 1.0, 1.0), (0.5714285714285714,
    0.21960784494876862, 0.21960784494876862), (0.7142857142857143,
    0.94117647409439087, 0.94117647409439087), (0.8571428571428571,
    0.74901962280273438, 0.74901962280273438), (1.0,
    0.40000000596046448, 0.40000000596046448)]}

_Blues_data = {'blue': [(0.0, 1.0, 1.0), (0.125, 0.9686274528503418,
0.9686274528503418), (0.25, 0.93725490570068359, 0.93725490570068359),
(0.375, 0.88235294818878174, 0.88235294818878174), (0.5,
0.83921569585800171, 0.83921569585800171), (0.625, 0.7764706015586853,
0.7764706015586853), (0.75, 0.70980393886566162, 0.70980393886566162),
(0.875, 0.61176472902297974, 0.61176472902297974), (1.0,
0.41960784792900085, 0.41960784792900085)],

    'green': [(0.0, 0.9843137264251709, 0.9843137264251709), (0.125,
    0.92156863212585449, 0.92156863212585449), (0.25,
    0.85882353782653809, 0.85882353782653809), (0.375,
    0.7921568751335144, 0.7921568751335144), (0.5,
    0.68235296010971069, 0.68235296010971069), (0.625,
    0.57254904508590698, 0.57254904508590698), (0.75,
    0.44313725829124451, 0.44313725829124451), (0.875,
    0.31764706969261169, 0.31764706969261169), (1.0,
    0.18823529779911041, 0.18823529779911041)],

    'red': [(0.0, 0.9686274528503418, 0.9686274528503418), (0.125,
    0.87058824300765991, 0.87058824300765991), (0.25,
    0.7764706015586853, 0.7764706015586853), (0.375,
    0.61960786581039429, 0.61960786581039429), (0.5,
    0.41960784792900085, 0.41960784792900085), (0.625,
    0.25882354378700256, 0.25882354378700256), (0.75,
    0.12941177189350128, 0.12941177189350128), (0.875,
    0.031372550874948502, 0.031372550874948502), (1.0,
    0.031372550874948502, 0.031372550874948502)]}

_BrBG_data = {'blue': [(0.0, 0.019607843831181526,
0.019607843831181526), (0.10000000000000001, 0.039215687662363052,
0.039215687662363052), (0.20000000000000001, 0.17647059261798859,
0.17647059261798859), (0.29999999999999999, 0.49019607901573181,
0.49019607901573181), (0.40000000000000002, 0.76470589637756348,
0.76470589637756348), (0.5, 0.96078431606292725, 0.96078431606292725),
(0.59999999999999998, 0.89803922176361084, 0.89803922176361084),
(0.69999999999999996, 0.75686275959014893, 0.75686275959014893),
(0.80000000000000004, 0.56078433990478516, 0.56078433990478516),
(0.90000000000000002, 0.36862745881080627, 0.36862745881080627), (1.0,
0.18823529779911041, 0.18823529779911041)],

    'green': [(0.0, 0.18823529779911041, 0.18823529779911041),
    (0.10000000000000001, 0.31764706969261169, 0.31764706969261169),
    (0.20000000000000001, 0.5058823823928833, 0.5058823823928833),
    (0.29999999999999999, 0.7607843279838562, 0.7607843279838562),
    (0.40000000000000002, 0.90980392694473267, 0.90980392694473267),
    (0.5, 0.96078431606292725, 0.96078431606292725),
    (0.59999999999999998, 0.91764706373214722, 0.91764706373214722),
    (0.69999999999999996, 0.80392158031463623, 0.80392158031463623),
    (0.80000000000000004, 0.59215688705444336, 0.59215688705444336),
    (0.90000000000000002, 0.40000000596046448, 0.40000000596046448),
    (1.0, 0.23529411852359772, 0.23529411852359772)],

    'red': [(0.0, 0.32941177487373352, 0.32941177487373352),
    (0.10000000000000001, 0.54901963472366333, 0.54901963472366333),
    (0.20000000000000001, 0.74901962280273438, 0.74901962280273438),
    (0.29999999999999999, 0.87450981140136719, 0.87450981140136719),
    (0.40000000000000002, 0.96470588445663452, 0.96470588445663452),
    (0.5, 0.96078431606292725, 0.96078431606292725),
    (0.59999999999999998, 0.78039216995239258, 0.78039216995239258),
    (0.69999999999999996, 0.50196081399917603, 0.50196081399917603),
    (0.80000000000000004, 0.20784313976764679, 0.20784313976764679),
    (0.90000000000000002, 0.0039215688593685627,
    0.0039215688593685627), (1.0, 0.0, 0.0)]}

_BuGn_data = {'blue': [(0.0, 0.99215686321258545,
0.99215686321258545), (0.125, 0.97647058963775635,
0.97647058963775635), (0.25, 0.90196079015731812,
0.90196079015731812), (0.375, 0.78823530673980713,
0.78823530673980713), (0.5, 0.64313727617263794, 0.64313727617263794),
(0.625, 0.46274510025978088, 0.46274510025978088), (0.75,
0.27058824896812439, 0.27058824896812439), (0.875,
0.17254902422428131, 0.17254902422428131), (1.0, 0.10588235408067703,
0.10588235408067703)],

    'green': [(0.0, 0.98823529481887817, 0.98823529481887817), (0.125,
    0.96078431606292725, 0.96078431606292725), (0.25,
    0.92549020051956177, 0.92549020051956177), (0.375,
    0.84705883264541626, 0.84705883264541626), (0.5,
    0.7607843279838562, 0.7607843279838562), (0.625,
    0.68235296010971069, 0.68235296010971069), (0.75,
    0.54509806632995605, 0.54509806632995605), (0.875,
    0.42745098471641541, 0.42745098471641541), (1.0,
    0.26666668057441711, 0.26666668057441711)], 'red': [(0.0,
    0.9686274528503418, 0.9686274528503418), (0.125,
    0.89803922176361084, 0.89803922176361084), (0.25,
    0.80000001192092896, 0.80000001192092896), (0.375,
    0.60000002384185791, 0.60000002384185791), (0.5,
    0.40000000596046448, 0.40000000596046448), (0.625,
    0.25490197539329529, 0.25490197539329529), (0.75,
    0.13725490868091583, 0.13725490868091583), (0.875, 0.0, 0.0),
    (1.0, 0.0, 0.0)]}

_BuPu_data = {'blue': [(0.0, 0.99215686321258545,
0.99215686321258545), (0.125, 0.95686274766921997,
0.95686274766921997), (0.25, 0.90196079015731812,
0.90196079015731812), (0.375, 0.85490196943283081,
0.85490196943283081), (0.5, 0.7764706015586853, 0.7764706015586853),
(0.625, 0.69411766529083252, 0.69411766529083252), (0.75,
0.61568629741668701, 0.61568629741668701), (0.875,
0.48627451062202454, 0.48627451062202454), (1.0, 0.29411765933036804,
0.29411765933036804)],

    'green': [(0.0, 0.98823529481887817, 0.98823529481887817), (0.125,
    0.92549020051956177, 0.92549020051956177), (0.25,
    0.82745099067687988, 0.82745099067687988), (0.375,
    0.73725491762161255, 0.73725491762161255), (0.5,
    0.58823531866073608, 0.58823531866073608), (0.625,
    0.41960784792900085, 0.41960784792900085), (0.75,
    0.25490197539329529, 0.25490197539329529), (0.875,
    0.058823529630899429, 0.058823529630899429), (1.0, 0.0, 0.0)],

    'red': [(0.0, 0.9686274528503418, 0.9686274528503418), (0.125,
    0.87843137979507446, 0.87843137979507446), (0.25,
    0.74901962280273438, 0.74901962280273438), (0.375,
    0.61960786581039429, 0.61960786581039429), (0.5,
    0.54901963472366333, 0.54901963472366333), (0.625,
    0.54901963472366333, 0.54901963472366333), (0.75,
    0.53333336114883423, 0.53333336114883423), (0.875,
    0.5058823823928833, 0.5058823823928833), (1.0,
    0.30196079611778259, 0.30196079611778259)]}

_Dark2_data = {'blue': [(0.0, 0.46666666865348816,
0.46666666865348816), (0.14285714285714285, 0.0078431377187371254,
0.0078431377187371254), (0.2857142857142857, 0.70196080207824707,
0.70196080207824707), (0.42857142857142855, 0.54117649793624878,
0.54117649793624878), (0.5714285714285714, 0.11764705926179886,
0.11764705926179886), (0.7142857142857143, 0.0078431377187371254,
0.0078431377187371254), (0.8571428571428571, 0.11372549086809158,
0.11372549086809158), (1.0, 0.40000000596046448,
0.40000000596046448)],

    'green': [(0.0, 0.61960786581039429, 0.61960786581039429),
    (0.14285714285714285, 0.37254902720451355, 0.37254902720451355),
    (0.2857142857142857, 0.43921568989753723, 0.43921568989753723),
    (0.42857142857142855, 0.16078431904315948, 0.16078431904315948),
    (0.5714285714285714, 0.65098041296005249, 0.65098041296005249),
    (0.7142857142857143, 0.67058825492858887, 0.67058825492858887),
    (0.8571428571428571, 0.46274510025978088, 0.46274510025978088),
    (1.0, 0.40000000596046448, 0.40000000596046448)],

    'red': [(0.0, 0.10588235408067703, 0.10588235408067703),
    (0.14285714285714285, 0.85098040103912354, 0.85098040103912354),
    (0.2857142857142857, 0.45882353186607361, 0.45882353186607361),
    (0.42857142857142855, 0.90588235855102539, 0.90588235855102539),
    (0.5714285714285714, 0.40000000596046448, 0.40000000596046448),
    (0.7142857142857143, 0.90196079015731812, 0.90196079015731812),
    (0.8571428571428571, 0.65098041296005249, 0.65098041296005249),
    (1.0, 0.40000000596046448, 0.40000000596046448)]}

_GnBu_data = {'blue': [(0.0, 0.94117647409439087,
0.94117647409439087), (0.125, 0.85882353782653809,
0.85882353782653809), (0.25, 0.77254903316497803,
0.77254903316497803), (0.375, 0.70980393886566162,
0.70980393886566162), (0.5, 0.76862746477127075, 0.76862746477127075),
(0.625, 0.82745099067687988, 0.82745099067687988), (0.75,
0.7450980544090271, 0.7450980544090271), (0.875, 0.67450982332229614,
0.67450982332229614), (1.0, 0.5058823823928833, 0.5058823823928833)],

    'green': [(0.0, 0.98823529481887817, 0.98823529481887817), (0.125,
    0.9529411792755127, 0.9529411792755127), (0.25,
    0.92156863212585449, 0.92156863212585449), (0.375,
    0.86666667461395264, 0.86666667461395264), (0.5,
    0.80000001192092896, 0.80000001192092896), (0.625,
    0.70196080207824707, 0.70196080207824707), (0.75,
    0.54901963472366333, 0.54901963472366333), (0.875,
    0.40784314274787903, 0.40784314274787903), (1.0,
    0.25098040699958801, 0.25098040699958801)],

    'red': [(0.0, 0.9686274528503418, 0.9686274528503418), (0.125,
    0.87843137979507446, 0.87843137979507446), (0.25,
    0.80000001192092896, 0.80000001192092896), (0.375,
    0.65882354974746704, 0.65882354974746704), (0.5,
    0.48235294222831726, 0.48235294222831726), (0.625,
    0.30588236451148987, 0.30588236451148987), (0.75,
    0.16862745583057404, 0.16862745583057404), (0.875,
    0.031372550874948502, 0.031372550874948502), (1.0,
    0.031372550874948502, 0.031372550874948502)]}

_Greens_data = {'blue': [(0.0, 0.96078431606292725,
0.96078431606292725), (0.125, 0.87843137979507446,
0.87843137979507446), (0.25, 0.75294119119644165,
0.75294119119644165), (0.375, 0.60784316062927246,
0.60784316062927246), (0.5, 0.46274510025978088, 0.46274510025978088),
(0.625, 0.364705890417099, 0.364705890417099), (0.75,
0.27058824896812439, 0.27058824896812439), (0.875,
0.17254902422428131, 0.17254902422428131), (1.0, 0.10588235408067703,
0.10588235408067703)],

    'green': [(0.0, 0.98823529481887817, 0.98823529481887817), (0.125,
    0.96078431606292725, 0.96078431606292725), (0.25,
    0.91372549533843994, 0.91372549533843994), (0.375,
    0.85098040103912354, 0.85098040103912354), (0.5,
    0.76862746477127075, 0.76862746477127075), (0.625,
    0.67058825492858887, 0.67058825492858887), (0.75,
    0.54509806632995605, 0.54509806632995605), (0.875,
    0.42745098471641541, 0.42745098471641541), (1.0,
    0.26666668057441711, 0.26666668057441711)],

    'red': [(0.0, 0.9686274528503418, 0.9686274528503418), (0.125,
    0.89803922176361084, 0.89803922176361084), (0.25,
    0.78039216995239258, 0.78039216995239258), (0.375,
    0.63137257099151611, 0.63137257099151611), (0.5,
    0.45490196347236633, 0.45490196347236633), (0.625,
    0.25490197539329529, 0.25490197539329529), (0.75,
    0.13725490868091583, 0.13725490868091583), (0.875, 0.0, 0.0),
    (1.0, 0.0, 0.0)]}

_Greys_data = {'blue': [(0.0, 1.0, 1.0), (0.125, 0.94117647409439087,
0.94117647409439087), (0.25, 0.85098040103912354,
0.85098040103912354), (0.375, 0.74117648601531982,
0.74117648601531982), (0.5, 0.58823531866073608, 0.58823531866073608),
(0.625, 0.45098039507865906, 0.45098039507865906), (0.75,
0.32156863808631897, 0.32156863808631897), (0.875,
0.14509804546833038, 0.14509804546833038), (1.0, 0.0, 0.0)],

    'green': [(0.0, 1.0, 1.0), (0.125, 0.94117647409439087,
    0.94117647409439087), (0.25, 0.85098040103912354,
    0.85098040103912354), (0.375, 0.74117648601531982,
    0.74117648601531982), (0.5, 0.58823531866073608,
    0.58823531866073608), (0.625, 0.45098039507865906,
    0.45098039507865906), (0.75, 0.32156863808631897,
    0.32156863808631897), (0.875, 0.14509804546833038,
    0.14509804546833038), (1.0, 0.0, 0.0)],

    'red': [(0.0, 1.0, 1.0), (0.125, 0.94117647409439087,
    0.94117647409439087), (0.25, 0.85098040103912354,
    0.85098040103912354), (0.375, 0.74117648601531982,
    0.74117648601531982), (0.5, 0.58823531866073608,
    0.58823531866073608), (0.625, 0.45098039507865906,
    0.45098039507865906), (0.75, 0.32156863808631897,
    0.32156863808631897), (0.875, 0.14509804546833038,
    0.14509804546833038), (1.0, 0.0, 0.0)]}

_Oranges_data = {'blue': [(0.0, 0.92156863212585449,
0.92156863212585449), (0.125, 0.80784314870834351,
0.80784314870834351), (0.25, 0.63529413938522339,
0.63529413938522339), (0.375, 0.41960784792900085,
0.41960784792900085), (0.5, 0.23529411852359772, 0.23529411852359772),
(0.625, 0.074509806931018829, 0.074509806931018829), (0.75,
0.0039215688593685627, 0.0039215688593685627), (0.875,
0.011764706112444401, 0.011764706112444401), (1.0,
0.015686275437474251, 0.015686275437474251)],

    'green': [(0.0, 0.96078431606292725, 0.96078431606292725), (0.125,
    0.90196079015731812, 0.90196079015731812), (0.25,
    0.81568628549575806, 0.81568628549575806), (0.375,
    0.68235296010971069, 0.68235296010971069), (0.5,
    0.55294120311737061, 0.55294120311737061), (0.625,
    0.4117647111415863, 0.4117647111415863), (0.75,
    0.28235295414924622, 0.28235295414924622), (0.875,
    0.21176470816135406, 0.21176470816135406), (1.0,
    0.15294118225574493, 0.15294118225574493)],

    'red': [(0.0, 1.0, 1.0), (0.125, 0.99607843160629272,
    0.99607843160629272), (0.25, 0.99215686321258545,
    0.99215686321258545), (0.375, 0.99215686321258545,
    0.99215686321258545), (0.5, 0.99215686321258545,
    0.99215686321258545), (0.625, 0.94509804248809814,
    0.94509804248809814), (0.75, 0.85098040103912354,
    0.85098040103912354), (0.875, 0.65098041296005249,
    0.65098041296005249), (1.0, 0.49803921580314636,
    0.49803921580314636)]}

_OrRd_data = {'blue': [(0.0, 0.92549020051956177,
0.92549020051956177), (0.125, 0.78431373834609985,
0.78431373834609985), (0.25, 0.61960786581039429,
0.61960786581039429), (0.375, 0.51764708757400513,
0.51764708757400513), (0.5, 0.3490196168422699, 0.3490196168422699),
(0.625, 0.28235295414924622, 0.28235295414924622), (0.75,
0.12156862765550613, 0.12156862765550613), (0.875, 0.0, 0.0), (1.0,
0.0, 0.0)],

    'green': [(0.0, 0.9686274528503418, 0.9686274528503418), (0.125,
    0.90980392694473267, 0.90980392694473267), (0.25,
    0.83137255907058716, 0.83137255907058716), (0.375,
    0.73333334922790527, 0.73333334922790527), (0.5,
    0.55294120311737061, 0.55294120311737061), (0.625,
    0.3960784375667572, 0.3960784375667572), (0.75,
    0.18823529779911041, 0.18823529779911041), (0.875, 0.0, 0.0),
    (1.0, 0.0, 0.0)],

    'red': [(0.0, 1.0, 1.0), (0.125, 0.99607843160629272,
    0.99607843160629272), (0.25, 0.99215686321258545,
    0.99215686321258545), (0.375, 0.99215686321258545,
    0.99215686321258545), (0.5, 0.98823529481887817,
    0.98823529481887817), (0.625, 0.93725490570068359,
    0.93725490570068359), (0.75, 0.84313726425170898,
    0.84313726425170898), (0.875, 0.70196080207824707,
    0.70196080207824707), (1.0, 0.49803921580314636,
    0.49803921580314636)]}

_Paired_data = {'blue': [(0.0, 0.89019608497619629,
0.89019608497619629), (0.090909090909090912, 0.70588237047195435,
0.70588237047195435), (0.18181818181818182, 0.54117649793624878,
0.54117649793624878), (0.27272727272727271, 0.17254902422428131,
0.17254902422428131), (0.36363636363636365, 0.60000002384185791,
0.60000002384185791), (0.45454545454545453, 0.10980392247438431,
0.10980392247438431), (0.54545454545454541, 0.43529412150382996,
0.43529412150382996), (0.63636363636363635, 0.0, 0.0),
(0.72727272727272729, 0.83921569585800171, 0.83921569585800171),
(0.81818181818181823, 0.60392159223556519, 0.60392159223556519),
(0.90909090909090906, 0.60000002384185791, 0.60000002384185791), (1.0,
0.15686275064945221, 0.15686275064945221)],

    'green': [(0.0, 0.80784314870834351, 0.80784314870834351),
    (0.090909090909090912, 0.47058823704719543, 0.47058823704719543),
    (0.18181818181818182, 0.87450981140136719, 0.87450981140136719),
    (0.27272727272727271, 0.62745100259780884, 0.62745100259780884),
    (0.36363636363636365, 0.60392159223556519, 0.60392159223556519),
    (0.45454545454545453, 0.10196078568696976, 0.10196078568696976),
    (0.54545454545454541, 0.74901962280273438, 0.74901962280273438),
    (0.63636363636363635, 0.49803921580314636, 0.49803921580314636),
    (0.72727272727272729, 0.69803923368453979, 0.69803923368453979),
    (0.81818181818181823, 0.23921568691730499, 0.23921568691730499),
    (0.90909090909090906, 1.0, 1.0), (1.0, 0.3490196168422699,
    0.3490196168422699)],

    'red': [(0.0, 0.65098041296005249, 0.65098041296005249),
    (0.090909090909090912, 0.12156862765550613, 0.12156862765550613),
    (0.18181818181818182, 0.69803923368453979, 0.69803923368453979),
    (0.27272727272727271, 0.20000000298023224, 0.20000000298023224),
    (0.36363636363636365, 0.9843137264251709, 0.9843137264251709),
    (0.45454545454545453, 0.89019608497619629, 0.89019608497619629),
    (0.54545454545454541, 0.99215686321258545, 0.99215686321258545),
    (0.63636363636363635, 1.0, 1.0), (0.72727272727272729,
    0.7921568751335144, 0.7921568751335144), (0.81818181818181823,
    0.41568627953529358, 0.41568627953529358), (0.90909090909090906,
    1.0, 1.0), (1.0, 0.69411766529083252, 0.69411766529083252)]}

_Pastel1_data = {'blue': [(0.0, 0.68235296010971069,
0.68235296010971069), (0.125, 0.89019608497619629,
0.89019608497619629), (0.25, 0.77254903316497803,
0.77254903316497803), (0.375, 0.89411765336990356,
0.89411765336990356), (0.5, 0.65098041296005249, 0.65098041296005249),
(0.625, 0.80000001192092896, 0.80000001192092896), (0.75,
0.74117648601531982, 0.74117648601531982), (0.875,
0.92549020051956177, 0.92549020051956177), (1.0, 0.94901961088180542,
0.94901961088180542)],

    'green': [(0.0, 0.70588237047195435, 0.70588237047195435), (0.125,
    0.80392158031463623, 0.80392158031463623), (0.25,
    0.92156863212585449, 0.92156863212585449), (0.375,
    0.79607844352722168, 0.79607844352722168), (0.5,
    0.85098040103912354, 0.85098040103912354), (0.625, 1.0, 1.0),
    (0.75, 0.84705883264541626, 0.84705883264541626), (0.875,
    0.85490196943283081, 0.85490196943283081), (1.0,
    0.94901961088180542, 0.94901961088180542)],

    'red': [(0.0, 0.9843137264251709, 0.9843137264251709), (0.125,
    0.70196080207824707, 0.70196080207824707), (0.25,
    0.80000001192092896, 0.80000001192092896), (0.375,
    0.87058824300765991, 0.87058824300765991), (0.5,
    0.99607843160629272, 0.99607843160629272), (0.625, 1.0, 1.0),
    (0.75, 0.89803922176361084, 0.89803922176361084), (0.875,
    0.99215686321258545, 0.99215686321258545), (1.0,
    0.94901961088180542, 0.94901961088180542)]}

_Pastel2_data = {'blue': [(0.0, 0.80392158031463623,
0.80392158031463623), (0.14285714285714285, 0.67450982332229614,
0.67450982332229614), (0.2857142857142857, 0.90980392694473267,
0.90980392694473267), (0.42857142857142855, 0.89411765336990356,
0.89411765336990356), (0.5714285714285714, 0.78823530673980713,
0.78823530673980713), (0.7142857142857143, 0.68235296010971069,
0.68235296010971069), (0.8571428571428571, 0.80000001192092896,
0.80000001192092896), (1.0, 0.80000001192092896,
0.80000001192092896)],

    'green': [(0.0, 0.88627451658248901, 0.88627451658248901),
    (0.14285714285714285, 0.80392158031463623, 0.80392158031463623),
    (0.2857142857142857, 0.83529412746429443, 0.83529412746429443),
    (0.42857142857142855, 0.7921568751335144, 0.7921568751335144),
    (0.5714285714285714, 0.96078431606292725, 0.96078431606292725),
    (0.7142857142857143, 0.94901961088180542, 0.94901961088180542),
    (0.8571428571428571, 0.88627451658248901, 0.88627451658248901),
    (1.0, 0.80000001192092896, 0.80000001192092896)],

    'red': [(0.0, 0.70196080207824707, 0.70196080207824707),
    (0.14285714285714285, 0.99215686321258545, 0.99215686321258545),
    (0.2857142857142857, 0.79607844352722168, 0.79607844352722168),
    (0.42857142857142855, 0.95686274766921997, 0.95686274766921997),
    (0.5714285714285714, 0.90196079015731812, 0.90196079015731812),
    (0.7142857142857143, 1.0, 1.0), (0.8571428571428571,
    0.94509804248809814, 0.94509804248809814), (1.0,
    0.80000001192092896, 0.80000001192092896)]}

_PiYG_data = {'blue': [(0.0, 0.32156863808631897,
0.32156863808631897), (0.10000000000000001, 0.49019607901573181,
0.49019607901573181), (0.20000000000000001, 0.68235296010971069,
0.68235296010971069), (0.29999999999999999, 0.85490196943283081,
0.85490196943283081), (0.40000000000000002, 0.93725490570068359,
0.93725490570068359), (0.5, 0.9686274528503418, 0.9686274528503418),
(0.59999999999999998, 0.81568628549575806, 0.81568628549575806),
(0.69999999999999996, 0.52549022436141968, 0.52549022436141968),
(0.80000000000000004, 0.25490197539329529, 0.25490197539329529),
(0.90000000000000002, 0.12941177189350128, 0.12941177189350128), (1.0,
0.098039217293262482, 0.098039217293262482)],

    'green': [(0.0, 0.0039215688593685627, 0.0039215688593685627),
    (0.10000000000000001, 0.10588235408067703, 0.10588235408067703),
    (0.20000000000000001, 0.46666666865348816, 0.46666666865348816),
    (0.29999999999999999, 0.7137255072593689, 0.7137255072593689),
    (0.40000000000000002, 0.87843137979507446, 0.87843137979507446),
    (0.5, 0.9686274528503418, 0.9686274528503418),
    (0.59999999999999998, 0.96078431606292725, 0.96078431606292725),
    (0.69999999999999996, 0.88235294818878174, 0.88235294818878174),
    (0.80000000000000004, 0.73725491762161255, 0.73725491762161255),
    (0.90000000000000002, 0.57254904508590698, 0.57254904508590698),
    (1.0, 0.39215686917304993, 0.39215686917304993)],

    'red': [(0.0, 0.55686277151107788, 0.55686277151107788),
    (0.10000000000000001, 0.77254903316497803, 0.77254903316497803),
    (0.20000000000000001, 0.87058824300765991, 0.87058824300765991),
    (0.29999999999999999, 0.94509804248809814, 0.94509804248809814),
    (0.40000000000000002, 0.99215686321258545, 0.99215686321258545),
    (0.5, 0.9686274528503418, 0.9686274528503418),
    (0.59999999999999998, 0.90196079015731812, 0.90196079015731812),
    (0.69999999999999996, 0.72156864404678345, 0.72156864404678345),
    (0.80000000000000004, 0.49803921580314636, 0.49803921580314636),
    (0.90000000000000002, 0.30196079611778259, 0.30196079611778259),
    (1.0, 0.15294118225574493, 0.15294118225574493)]}

_PRGn_data = {'blue': [(0.0, 0.29411765933036804,
0.29411765933036804), (0.10000000000000001, 0.51372551918029785,
0.51372551918029785), (0.20000000000000001, 0.67058825492858887,
0.67058825492858887), (0.29999999999999999, 0.81176471710205078,
0.81176471710205078), (0.40000000000000002, 0.90980392694473267,
0.90980392694473267), (0.5, 0.9686274528503418, 0.9686274528503418),
(0.59999999999999998, 0.82745099067687988, 0.82745099067687988),
(0.69999999999999996, 0.62745100259780884, 0.62745100259780884),
(0.80000000000000004, 0.3803921639919281, 0.3803921639919281),
(0.90000000000000002, 0.21568627655506134, 0.21568627655506134), (1.0,
0.10588235408067703, 0.10588235408067703)],

    'green': [(0.0, 0.0, 0.0), (0.10000000000000001,
    0.16470588743686676, 0.16470588743686676), (0.20000000000000001,
    0.43921568989753723, 0.43921568989753723), (0.29999999999999999,
    0.64705884456634521, 0.64705884456634521), (0.40000000000000002,
    0.83137255907058716, 0.83137255907058716), (0.5,
    0.9686274528503418, 0.9686274528503418), (0.59999999999999998,
    0.94117647409439087, 0.94117647409439087), (0.69999999999999996,
    0.85882353782653809, 0.85882353782653809), (0.80000000000000004,
    0.68235296010971069, 0.68235296010971069), (0.90000000000000002,
    0.47058823704719543, 0.47058823704719543), (1.0,
    0.26666668057441711, 0.26666668057441711)],

    'red': [(0.0, 0.25098040699958801, 0.25098040699958801),
    (0.10000000000000001, 0.46274510025978088, 0.46274510025978088),
    (0.20000000000000001, 0.60000002384185791, 0.60000002384185791),
    (0.29999999999999999, 0.7607843279838562, 0.7607843279838562),
    (0.40000000000000002, 0.90588235855102539, 0.90588235855102539),
    (0.5, 0.9686274528503418, 0.9686274528503418),
    (0.59999999999999998, 0.85098040103912354, 0.85098040103912354),
    (0.69999999999999996, 0.65098041296005249, 0.65098041296005249),
    (0.80000000000000004, 0.35294118523597717, 0.35294118523597717),
    (0.90000000000000002, 0.10588235408067703, 0.10588235408067703),
    (1.0, 0.0, 0.0)]}

_PuBu_data = {'blue': [(0.0, 0.9843137264251709, 0.9843137264251709),
(0.125, 0.94901961088180542, 0.94901961088180542), (0.25,
0.90196079015731812, 0.90196079015731812), (0.375,
0.85882353782653809, 0.85882353782653809), (0.5, 0.81176471710205078,
0.81176471710205078), (0.625, 0.75294119119644165,
0.75294119119644165), (0.75, 0.69019609689712524,
0.69019609689712524), (0.875, 0.55294120311737061,
0.55294120311737061), (1.0, 0.34509804844856262,
0.34509804844856262)],

    'green': [(0.0, 0.9686274528503418, 0.9686274528503418), (0.125,
    0.90588235855102539, 0.90588235855102539), (0.25,
    0.81960785388946533, 0.81960785388946533), (0.375,
    0.74117648601531982, 0.74117648601531982), (0.5,
    0.66274511814117432, 0.66274511814117432), (0.625,
    0.56470590829849243, 0.56470590829849243), (0.75,
    0.43921568989753723, 0.43921568989753723), (0.875,
    0.35294118523597717, 0.35294118523597717), (1.0,
    0.21960784494876862, 0.21960784494876862)],

    'red': [(0.0, 1.0, 1.0), (0.125, 0.92549020051956177,
    0.92549020051956177), (0.25, 0.81568628549575806,
    0.81568628549575806), (0.375, 0.65098041296005249,
    0.65098041296005249), (0.5, 0.45490196347236633,
    0.45490196347236633), (0.625, 0.21176470816135406,
    0.21176470816135406), (0.75, 0.019607843831181526,
    0.019607843831181526), (0.875, 0.015686275437474251,
    0.015686275437474251), (1.0, 0.0078431377187371254,
    0.0078431377187371254)]}

_PuBuGn_data = {'blue': [(0.0, 0.9843137264251709,
0.9843137264251709), (0.125, 0.94117647409439087,
0.94117647409439087), (0.25, 0.90196079015731812,
0.90196079015731812), (0.375, 0.85882353782653809,
0.85882353782653809), (0.5, 0.81176471710205078, 0.81176471710205078),
(0.625, 0.75294119119644165, 0.75294119119644165), (0.75,
0.54117649793624878, 0.54117649793624878), (0.875, 0.3490196168422699,
0.3490196168422699), (1.0, 0.21176470816135406, 0.21176470816135406)],

    'green': [(0.0, 0.9686274528503418, 0.9686274528503418), (0.125,
    0.88627451658248901, 0.88627451658248901), (0.25,
    0.81960785388946533, 0.81960785388946533), (0.375,
    0.74117648601531982, 0.74117648601531982), (0.5,
    0.66274511814117432, 0.66274511814117432), (0.625,
    0.56470590829849243, 0.56470590829849243), (0.75,
    0.5058823823928833, 0.5058823823928833), (0.875,
    0.42352941632270813, 0.42352941632270813), (1.0,
    0.27450981736183167, 0.27450981736183167)],

    'red': [(0.0, 1.0, 1.0), (0.125, 0.92549020051956177,
    0.92549020051956177), (0.25, 0.81568628549575806,
    0.81568628549575806), (0.375, 0.65098041296005249,
    0.65098041296005249), (0.5, 0.40392157435417175,
    0.40392157435417175), (0.625, 0.21176470816135406,
    0.21176470816135406), (0.75, 0.0078431377187371254,
    0.0078431377187371254), (0.875, 0.0039215688593685627,
    0.0039215688593685627), (1.0, 0.0039215688593685627,
    0.0039215688593685627)]}

_PuOr_data = {'blue': [(0.0, 0.031372550874948502,
0.031372550874948502), (0.10000000000000001, 0.023529412224888802,
0.023529412224888802), (0.20000000000000001, 0.078431375324726105,
0.078431375324726105), (0.29999999999999999, 0.38823530077934265,
0.38823530077934265), (0.40000000000000002, 0.7137255072593689,
0.7137255072593689), (0.5, 0.9686274528503418, 0.9686274528503418),
(0.59999999999999998, 0.92156863212585449, 0.92156863212585449),
(0.69999999999999996, 0.82352942228317261, 0.82352942228317261),
(0.80000000000000004, 0.67450982332229614, 0.67450982332229614),
(0.90000000000000002, 0.53333336114883423, 0.53333336114883423), (1.0,
0.29411765933036804, 0.29411765933036804)],

    'green': [(0.0, 0.23137255012989044, 0.23137255012989044),
    (0.10000000000000001, 0.34509804844856262, 0.34509804844856262),
    (0.20000000000000001, 0.50980395078659058, 0.50980395078659058),
    (0.29999999999999999, 0.72156864404678345, 0.72156864404678345),
    (0.40000000000000002, 0.87843137979507446, 0.87843137979507446),
    (0.5, 0.9686274528503418, 0.9686274528503418),
    (0.59999999999999998, 0.85490196943283081, 0.85490196943283081),
    (0.69999999999999996, 0.67058825492858887, 0.67058825492858887),
    (0.80000000000000004, 0.45098039507865906, 0.45098039507865906),
    (0.90000000000000002, 0.15294118225574493, 0.15294118225574493),
    (1.0, 0.0, 0.0)],

    'red': [(0.0, 0.49803921580314636, 0.49803921580314636),
    (0.10000000000000001, 0.70196080207824707, 0.70196080207824707),
    (0.20000000000000001, 0.87843137979507446, 0.87843137979507446),
    (0.29999999999999999, 0.99215686321258545, 0.99215686321258545),
    (0.40000000000000002, 0.99607843160629272, 0.99607843160629272),
    (0.5, 0.9686274528503418, 0.9686274528503418),
    (0.59999999999999998, 0.84705883264541626, 0.84705883264541626),
    (0.69999999999999996, 0.69803923368453979, 0.69803923368453979),
    (0.80000000000000004, 0.50196081399917603, 0.50196081399917603),
    (0.90000000000000002, 0.32941177487373352, 0.32941177487373352),
    (1.0, 0.17647059261798859, 0.17647059261798859)]}

_PuRd_data = {'blue': [(0.0, 0.97647058963775635,
0.97647058963775635), (0.125, 0.93725490570068359,
0.93725490570068359), (0.25, 0.85490196943283081,
0.85490196943283081), (0.375, 0.78039216995239258,
0.78039216995239258), (0.5, 0.69019609689712524, 0.69019609689712524),
(0.625, 0.54117649793624878, 0.54117649793624878), (0.75,
0.33725491166114807, 0.33725491166114807), (0.875,
0.26274511218070984, 0.26274511218070984), (1.0, 0.12156862765550613,
0.12156862765550613)],

    'green': [(0.0, 0.95686274766921997, 0.95686274766921997), (0.125,
    0.88235294818878174, 0.88235294818878174), (0.25,
    0.72549021244049072, 0.72549021244049072), (0.375,
    0.58039218187332153, 0.58039218187332153), (0.5,
    0.3960784375667572, 0.3960784375667572), (0.625,
    0.16078431904315948, 0.16078431904315948), (0.75,
    0.070588238537311554, 0.070588238537311554), (0.875, 0.0, 0.0),
    (1.0, 0.0, 0.0)],

    'red': [(0.0, 0.9686274528503418, 0.9686274528503418), (0.125,
    0.90588235855102539, 0.90588235855102539), (0.25,
    0.83137255907058716, 0.83137255907058716), (0.375,
    0.78823530673980713, 0.78823530673980713), (0.5,
    0.87450981140136719, 0.87450981140136719), (0.625,
    0.90588235855102539, 0.90588235855102539), (0.75,
    0.80784314870834351, 0.80784314870834351), (0.875,
    0.59607845544815063, 0.59607845544815063), (1.0,
    0.40392157435417175, 0.40392157435417175)]}

_Purples_data = {'blue': [(0.0, 0.99215686321258545,
0.99215686321258545), (0.125, 0.96078431606292725,
0.96078431606292725), (0.25, 0.92156863212585449,
0.92156863212585449), (0.375, 0.86274510622024536,
0.86274510622024536), (0.5, 0.78431373834609985, 0.78431373834609985),
(0.625, 0.729411780834198, 0.729411780834198), (0.75,
0.63921570777893066, 0.63921570777893066), (0.875,
0.56078433990478516, 0.56078433990478516), (1.0, 0.49019607901573181,
0.49019607901573181)],

    'green': [(0.0, 0.9843137264251709, 0.9843137264251709), (0.125,
    0.92941176891326904, 0.92941176891326904), (0.25,
    0.85490196943283081, 0.85490196943283081), (0.375,
    0.74117648601531982, 0.74117648601531982), (0.5,
    0.60392159223556519, 0.60392159223556519), (0.625,
    0.49019607901573181, 0.49019607901573181), (0.75,
    0.31764706969261169, 0.31764706969261169), (0.875,
    0.15294118225574493, 0.15294118225574493), (1.0, 0.0, 0.0)],

    'red': [(0.0, 0.98823529481887817, 0.98823529481887817), (0.125,
    0.93725490570068359, 0.93725490570068359), (0.25,
    0.85490196943283081, 0.85490196943283081), (0.375,
    0.73725491762161255, 0.73725491762161255), (0.5,
    0.61960786581039429, 0.61960786581039429), (0.625,
    0.50196081399917603, 0.50196081399917603), (0.75,
    0.41568627953529358, 0.41568627953529358), (0.875,
    0.32941177487373352, 0.32941177487373352), (1.0,
    0.24705882370471954, 0.24705882370471954)]}

_RdBu_data = {'blue': [(0.0, 0.12156862765550613,
0.12156862765550613), (0.10000000000000001, 0.16862745583057404,
0.16862745583057404), (0.20000000000000001, 0.30196079611778259,
0.30196079611778259), (0.29999999999999999, 0.50980395078659058,
0.50980395078659058), (0.40000000000000002, 0.78039216995239258,
0.78039216995239258), (0.5, 0.9686274528503418, 0.9686274528503418),
(0.59999999999999998, 0.94117647409439087, 0.94117647409439087),
(0.69999999999999996, 0.87058824300765991, 0.87058824300765991),
(0.80000000000000004, 0.76470589637756348, 0.76470589637756348),
(0.90000000000000002, 0.67450982332229614, 0.67450982332229614), (1.0,
0.3803921639919281, 0.3803921639919281)],

    'green': [(0.0, 0.0, 0.0), (0.10000000000000001,
    0.094117648899555206, 0.094117648899555206), (0.20000000000000001,
    0.37647059559822083, 0.37647059559822083), (0.29999999999999999,
    0.64705884456634521, 0.64705884456634521), (0.40000000000000002,
    0.85882353782653809, 0.85882353782653809), (0.5,
    0.9686274528503418, 0.9686274528503418), (0.59999999999999998,
    0.89803922176361084, 0.89803922176361084), (0.69999999999999996,
    0.77254903316497803, 0.77254903316497803), (0.80000000000000004,
    0.57647061347961426, 0.57647061347961426), (0.90000000000000002,
    0.40000000596046448, 0.40000000596046448), (1.0,
    0.18823529779911041, 0.18823529779911041)],

    'red': [(0.0, 0.40392157435417175, 0.40392157435417175),
    (0.10000000000000001, 0.69803923368453979, 0.69803923368453979),
    (0.20000000000000001, 0.83921569585800171, 0.83921569585800171),
    (0.29999999999999999, 0.95686274766921997, 0.95686274766921997),
    (0.40000000000000002, 0.99215686321258545, 0.99215686321258545),
    (0.5, 0.9686274528503418, 0.9686274528503418),
    (0.59999999999999998, 0.81960785388946533, 0.81960785388946533),
    (0.69999999999999996, 0.57254904508590698, 0.57254904508590698),
    (0.80000000000000004, 0.26274511218070984, 0.26274511218070984),
    (0.90000000000000002, 0.12941177189350128, 0.12941177189350128),
    (1.0, 0.019607843831181526, 0.019607843831181526)]}

_RdGy_data = {'blue': [(0.0, 0.12156862765550613,
0.12156862765550613), (0.10000000000000001, 0.16862745583057404,
0.16862745583057404), (0.20000000000000001, 0.30196079611778259,
0.30196079611778259), (0.29999999999999999, 0.50980395078659058,
0.50980395078659058), (0.40000000000000002, 0.78039216995239258,
0.78039216995239258), (0.5, 1.0, 1.0), (0.59999999999999998,
0.87843137979507446, 0.87843137979507446), (0.69999999999999996,
0.729411780834198, 0.729411780834198), (0.80000000000000004,
0.52941179275512695, 0.52941179275512695), (0.90000000000000002,
0.30196079611778259, 0.30196079611778259), (1.0, 0.10196078568696976,
0.10196078568696976)],

    'green': [(0.0, 0.0, 0.0), (0.10000000000000001,
    0.094117648899555206, 0.094117648899555206), (0.20000000000000001,
    0.37647059559822083, 0.37647059559822083), (0.29999999999999999,
    0.64705884456634521, 0.64705884456634521), (0.40000000000000002,
    0.85882353782653809, 0.85882353782653809), (0.5, 1.0, 1.0),
    (0.59999999999999998, 0.87843137979507446, 0.87843137979507446),
    (0.69999999999999996, 0.729411780834198, 0.729411780834198),
    (0.80000000000000004, 0.52941179275512695, 0.52941179275512695),
    (0.90000000000000002, 0.30196079611778259, 0.30196079611778259),
    (1.0, 0.10196078568696976, 0.10196078568696976)],

    'red': [(0.0, 0.40392157435417175, 0.40392157435417175),
    (0.10000000000000001, 0.69803923368453979, 0.69803923368453979),
    (0.20000000000000001, 0.83921569585800171, 0.83921569585800171),
    (0.29999999999999999, 0.95686274766921997, 0.95686274766921997),
    (0.40000000000000002, 0.99215686321258545, 0.99215686321258545),
    (0.5, 1.0, 1.0), (0.59999999999999998, 0.87843137979507446,
    0.87843137979507446), (0.69999999999999996, 0.729411780834198,
    0.729411780834198), (0.80000000000000004, 0.52941179275512695,
    0.52941179275512695), (0.90000000000000002, 0.30196079611778259,
    0.30196079611778259), (1.0, 0.10196078568696976,
    0.10196078568696976)]}

_RdPu_data = {'blue': [(0.0, 0.9529411792755127, 0.9529411792755127),
(0.125, 0.86666667461395264, 0.86666667461395264), (0.25,
0.75294119119644165, 0.75294119119644165), (0.375,
0.70980393886566162, 0.70980393886566162), (0.5, 0.63137257099151611,
0.63137257099151611), (0.625, 0.59215688705444336,
0.59215688705444336), (0.75, 0.49411764740943909,
0.49411764740943909), (0.875, 0.46666666865348816,
0.46666666865348816), (1.0, 0.41568627953529358,
0.41568627953529358)],

    'green': [(0.0, 0.9686274528503418, 0.9686274528503418), (0.125,
    0.87843137979507446, 0.87843137979507446), (0.25,
    0.77254903316497803, 0.77254903316497803), (0.375,
    0.62352943420410156, 0.62352943420410156), (0.5,
    0.40784314274787903, 0.40784314274787903), (0.625,
    0.20392157137393951, 0.20392157137393951), (0.75,
    0.0039215688593685627, 0.0039215688593685627), (0.875,
    0.0039215688593685627, 0.0039215688593685627), (1.0, 0.0, 0.0)],

    'red': [(0.0, 1.0, 1.0), (0.125, 0.99215686321258545,
    0.99215686321258545), (0.25, 0.98823529481887817,
    0.98823529481887817), (0.375, 0.98039215803146362,
    0.98039215803146362), (0.5, 0.9686274528503418,
    0.9686274528503418), (0.625, 0.86666667461395264,
    0.86666667461395264), (0.75, 0.68235296010971069,
    0.68235296010971069), (0.875, 0.47843137383460999,
    0.47843137383460999), (1.0, 0.28627452254295349,
    0.28627452254295349)]}

_RdYlBu_data = {'blue': [(0.0, 0.14901961386203766,
                 0.14901961386203766), (0.10000000149011612,
                 0.15294118225574493, 0.15294118225574493),
                 (0.20000000298023224, 0.26274511218070984,
                 0.26274511218070984), (0.30000001192092896,
                 0.3803921639919281, 0.3803921639919281),
                 (0.40000000596046448, 0.56470590829849243,
                 0.56470590829849243), (0.5, 0.74901962280273438,
                 0.74901962280273438), (0.60000002384185791,
                 0.97254902124404907, 0.97254902124404907),
                 (0.69999998807907104, 0.91372549533843994,
                 0.91372549533843994), (0.80000001192092896,
                 0.81960785388946533, 0.81960785388946533),
                 (0.89999997615814209, 0.70588237047195435,
                 0.70588237047195435), (1.0, 0.58431375026702881,
                 0.58431375026702881)], 'green': [(0.0, 0.0, 0.0),
                 (0.10000000149011612, 0.18823529779911041,
                 0.18823529779911041), (0.20000000298023224,
                 0.42745098471641541, 0.42745098471641541),
                 (0.30000001192092896, 0.68235296010971069,
                 0.68235296010971069), (0.40000000596046448,
                 0.87843137979507446, 0.87843137979507446), (0.5, 1.0,
                 1.0), (0.60000002384185791, 0.9529411792755127,
                 0.9529411792755127), (0.69999998807907104,
                 0.85098040103912354, 0.85098040103912354),
                 (0.80000001192092896, 0.67843139171600342,
                 0.67843139171600342), (0.89999997615814209,
                 0.45882353186607361, 0.45882353186607361), (1.0,
                 0.21176470816135406, 0.21176470816135406)], 'red':
                 [(0.0, 0.64705884456634521, 0.64705884456634521),
                 (0.10000000149011612, 0.84313726425170898,
                 0.84313726425170898), (0.20000000298023224,
                 0.95686274766921997, 0.95686274766921997),
                 (0.30000001192092896, 0.99215686321258545,
                 0.99215686321258545), (0.40000000596046448,
                 0.99607843160629272, 0.99607843160629272), (0.5, 1.0,
                 1.0), (0.60000002384185791, 0.87843137979507446,
                 0.87843137979507446), (0.69999998807907104,
                 0.67058825492858887, 0.67058825492858887),
                 (0.80000001192092896, 0.45490196347236633,
                 0.45490196347236633), (0.89999997615814209,
                 0.27058824896812439, 0.27058824896812439), (1.0,
                 0.19215686619281769, 0.19215686619281769)]}

_RdYlGn_data = {'blue': [(0.0, 0.14901961386203766,
0.14901961386203766), (0.10000000000000001, 0.15294118225574493,
0.15294118225574493), (0.20000000000000001, 0.26274511218070984,
0.262