Source code for PseudoNetCDF.plotutil.colors

__all__ = ['register', 'get_cmap', 'register_norm', 'get_norm']

from matplotlib.colors import from_levels_and_colors, Normalize
from matplotlib.cm import get_cmap
import matplotlib as mpl

try:
    register = mpl.colormaps.register
except AttributeError:
    register = mpl.cm.register_cmap


_registered_norms = {}


[docs] def get_norm(name): global _registered_norms return _registered_norms[name]
[docs] def register_norm(name, norm): global _registered_norms if isinstance(norm, Normalize): _registered_norms[name] = norm else: raise TypeError( 'cmap should be an instance of Normalize; got ' + str(type(norm)))
def _addusepaaqi(): aqicolors = ['green', 'yellow', 'orange', 'red', 'purple', 'maroon'] aqic = aqicolors bounds_colors = {} bounds_colors[('O3', 'mda8', 'ppbv')] = ([0, 55, 71, 86, 106, 200], aqic[:5] + ['black'], 'max') bounds_colors[('O3', 'mda8', 'ppmv')] = ([0, 0.055, 0.071, 0.086, 0.106, 0.0200], aqic[:5] + ['black'], 'max') bounds_colors[('O3', 'mda1', 'ppbv')] = ([125, 165, 205, 405, 604], ['white'] + aqic[2:] + ['black'], 'both') pmb = [0, 12.1, 35.5, 55.5, 150.5, 250.5, 500.4] pmc = aqic + ['black'] bounds_colors[('PM25', 'a24', 'micrograms/m**3')] = (pmb, pmc, 'max') for key, (bnds, colors, extend) in bounds_colors.items(): print(key) name = '_'.join(('usepa', 'aqi',) + key) cmap, norm = from_levels_and_colors(bnds, colors, extend=extend) register(name=name, cmap=cmap) register_norm(name=name, norm=norm) _addusepaaqi() if __name__ == '__main__': from matplotlib import pyplot as plt import numpy as np varkey = 'O3' intv = 'mda8' unit = 'ppbv' colorscale = 'usepa_aqi_' + '_'.join([varkey, intv, unit]) norm = get_norm(colorscale) cmap = get_cmap(colorscale) data = np.linspace(25, 200, 16).reshape(4, 4) print(np.flipud(data)) plt.pcolor(data, norm=norm, cmap=cmap) plt.savefig('test.png')