### Navigation

- index
- modules |
- home|
- examples|
- tutorials|
- pyplot|
- docs »

# Colours

Some simple functions to generate colours.

    import numpy as np
    from matplotlib import colors as mcolors

    def pastel(colour, weight=2.4):
        """ Convert colour into a nice pastel shade"""
        rgb = np.asarray(mcolors.to_rgba(colour)[:3])
        # scale colour
        maxc = max(rgb)
        if maxc < 1.0 and maxc > 0:
            # scale colour
            scale = 1.0 / maxc
            rgb = rgb * scale
        # now decrease saturation
        total = rgb.sum()
        slack = 0
        for x in rgb:
            slack += 1.0 - x

        # want to increase weight from total to weight
        # pick x s.t.  slack * x == weight - total
        # x = (weight - total) / slack
        x = (weight - total) / slack

        rgb = [c + (x * (1.0 - c)) for c in rgb]

        return rgb

    def get_colours(n):
        """ Return n pastel colours. """
        base = np.asarray([[1, 0, 0], [0, 1, 0], [0, 0, 1]])

        if n <= 3:
            return base[0:n]

        # how many new colours to we need to insert between
        # red and green and between green and blue?
        needed = (((n - 3) + 1) / 2, (n - 3) / 2)

        colours = []
        for start in (0, 1):
            for x in np.linspace(0, 1, needed[start] + 2):
                colours.append((base[start] * (1.0 - x)) +
                               (base[start + 1] * x))

        return [pastel(c) for c in colours[0:n]]

Total running time of the script: ( 0 minutes 0.000 seconds)

Generated by Sphinx-Gallery