

.. _sphx_glr_gallery_color_colors_sgskip.py:


=======
Colours
=======

Some simple functions to generate colours.




.. code-block:: python

    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)



.. only :: html

 .. container:: sphx-glr-footer


  .. container:: sphx-glr-download

     :download:`Download Python source code: colors_sgskip.py <colors_sgskip.py>`



  .. container:: sphx-glr-download

     :download:`Download Jupyter notebook: colors_sgskip.ipynb <colors_sgskip.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.readthedocs.io>`_
