Source code for cooltools.lib.plotting

"""
Migrated from :mod:`mirnylib.plotting`.

"""
from matplotlib.cm import register_cmap
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np


PALETTES = {
    "fall": np.array(
        (
            (255, 255, 255),
            (255, 255, 204),
            (255, 237, 160),
            (254, 217, 118),
            (254, 178, 76),
            (253, 141, 60),
            (252, 78, 42),
            (227, 26, 28),
            (189, 0, 38),
            (128, 0, 38),
            (0, 0, 0),
        )
    )
    / 255,
    "blues": np.array(
        (
            (255, 255, 255),
            (180, 204, 225),
            (116, 169, 207),
            (54, 144, 192),
            (5, 112, 176),
            (4, 87, 135),
            (3, 65, 100),
            (2, 40, 66),
            (1, 20, 30),
            (0, 0, 0),
        )
    )
    / 255,
    "acidblues": np.array(
        (
            (255, 255, 255),
            (162, 192, 222),
            (140, 137, 187),
            (140, 87, 167),
            (140, 45, 143),
            (120, 20, 120),
            (90, 15, 90),
            (60, 10, 60),
            (30, 5, 30),
            (0, 0, 0),
        )
    )
    / 255,
    "nmeth": np.array(
        (
            (236, 250, 255),
            (148, 189, 217),
            (118, 169, 68),
            (131, 111, 43),
            (122, 47, 25),
            (41, 0, 20),
        )
    )
    / 255,
}


[docs]def list_to_colormap(color_list, name=None): color_list = np.array(color_list) if color_list.min() < 0: raise ValueError("Colors should be 0 to 1, or 0 to 255") if color_list.max() > 1.0: if color_list.max() > 255: raise ValueError("Colors should be 0 to 1 or 0 to 255") else: color_list = color_list / 255.0 return mpl.colors.LinearSegmentedColormap.from_list(name, color_list, 256)
[docs]def get_cmap(name): is_reversed = name.endswith("_r") try: if is_reversed: pal = PALETTES[name[:-2]][::-1] else: pal = PALETTES[name] except KeyError: raise ValueError('Palette not found "{}"'.format(name)) return list_to_colormap(pal)
def _register_cmaps(): for name, pal in PALETTES.items(): register_cmap(name, list_to_colormap(pal)) register_cmap(name + "_r", list_to_colormap(pal[::-1])) _register_cmaps()
[docs]def gridspec_inches(wcols, hrows, fig_kwargs={}): fig_height_inches = sum(hrows) fig_width_inches = sum(wcols) fig = plt.figure( figsize=(fig_width_inches, fig_height_inches), subplotpars=mpl.figure.SubplotParams( left=0, right=1, bottom=0, top=1, wspace=0, hspace=0.0 ), # frameon=False, **fig_kwargs ) fig.set_size_inches(fig_width_inches, fig_height_inches, forward=True) gs = mpl.gridspec.GridSpec( len(hrows), len(wcols), left=0, right=1, top=1, bottom=0, wspace=0, hspace=0, width_ratios=wcols, height_ratios=hrows, ) return fig, gs