Source code for photutils.utils.colormaps
# Licensed under a 3-clause BSD style license - see LICENSE.rst
"""
This module provides tools for generating matplotlib colormaps.
"""
import numpy as np
__all__ = ['make_random_cmap']
[docs]
def make_random_cmap(ncolors=256, seed=None):
"""
Make a matplotlib colormap consisting of (random) muted colors.
A random colormap is very useful for plotting segmentation images.
Parameters
----------
ncolors : int, optional
The number of colors in the colormap. The default is 256.
seed : int, optional
A seed to initialize the `numpy.random.BitGenerator`. If `None`,
then fresh, unpredictable entropy will be pulled from the OS.
Separate function calls with the same ``seed`` will generate the
same colormap.
Returns
-------
cmap : `matplotlib.colors.ListedColormap`
The matplotlib colormap with random colors in RGBA format.
"""
from matplotlib import colors
rng = np.random.default_rng(seed)
hue = rng.uniform(low=0.0, high=1.0, size=ncolors)
sat = rng.uniform(low=0.2, high=0.7, size=ncolors)
val = rng.uniform(low=0.5, high=1.0, size=ncolors)
hsv = np.dstack((hue, sat, val))
rgb = np.squeeze(colors.hsv_to_rgb(hsv))
return colors.ListedColormap(colors.to_rgba_array(rgb))