-- | Beautiful and practical color schemes, taken from
--
--  * Color Brewer 2: https://colorbrewer2.org/
--  * Matplotlib: https://matplotlib.org/
--  * Seaborn: https://seaborn.pydata.org/
module Draw.Color.Schemes.Continuous
(
    -- * Linear, clamped on [0..1]
    -- ** Haskell
      haskell

    -- ** Matplotlib
    , magma
    , inferno
    , plasma
    , viridis
    , cividis
    , turbo

    -- ** Seaborn sequential
    , rocket
    , mako
    , flare
    , crest


    -- ** Seaborn diverging
    , vlag
    , icefire



    -- ** ColorBrewer2 sequential
    , orRd
    , puBu
    , buPu
    , oranges
    , buGn
    , ylOrBr
    , ylGn
    , reds
    , rdPu
    , greens
    , ylGnBu
    , purples
    , gnBu
    , greys
    , ylOrRd
    , puRd
    , blues
    , puBuGn



    -- ** ColorBrewer2 divisive
    , spectral
    , rdYlGn
    , rdBu
    , piYG
    , pRGn
    , rdYlBu
    , brBG
    , rdGy
    , puOr

    -- * Cyclic on [0..1]
    , twilight
)
where



import Draw.Color
import Draw.Color.Schemes.Internal.Common

import qualified Draw.Color.Schemes.Internal.ColorBrewer2 as ColorBrewer2
import qualified Draw.Color.Schemes.Internal.Haskell      as Haskell
import qualified Draw.Color.Schemes.Internal.MatPlotLib   as MatPlotLib
import qualified Draw.Color.Schemes.Internal.Seaborn      as Seaborn



-- | Official Haskell colors, as extracted from the SVG logo on haskell.org,
-- linearly interpolated between.
--
-- The actual logo’s colors can be found at @[0, 0.5, 1]@.
--
-- <<docs/colors/schemes/continuous/haskell/logo.png>>
haskell :: Double -> Color Double
haskell :: Double -> Color Double
haskell = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
Haskell.logo

-- | <<docs/colors/schemes/continuous/matplotlib/magma.png>>
magma :: Double -> Color Double
magma :: Double -> Color Double
magma = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
MatPlotLib.magma

-- | <<docs/colors/schemes/continuous/matplotlib/inferno.png>>
inferno :: Double -> Color Double
inferno :: Double -> Color Double
inferno = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
MatPlotLib.inferno

-- | <<docs/colors/schemes/continuous/matplotlib/plasma.png>>
plasma :: Double -> Color Double
plasma :: Double -> Color Double
plasma = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
MatPlotLib.plasma

-- | <<docs/colors/schemes/continuous/matplotlib/viridis.png>>
viridis :: Double -> Color Double
viridis :: Double -> Color Double
viridis = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
MatPlotLib.viridis

-- | <<docs/colors/schemes/continuous/matplotlib/cividis.png>>
cividis :: Double -> Color Double
cividis :: Double -> Color Double
cividis = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
MatPlotLib.cividis

-- | <<docs/colors/schemes/continuous/matplotlib/turbo.png>>
turbo :: Double -> Color Double
turbo :: Double -> Color Double
turbo = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
MatPlotLib.turbo

-- | <<docs/colors/schemes/continuous/matplotlib/twilight.png>>
twilight :: Double -> Color Double
twilight :: Double -> Color Double
twilight = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
cyclic Vector RGB
MatPlotLib.twilight

-- | <<docs/colors/schemes/continuous/seaborn/rocket.png>>
rocket :: Double -> Color Double
rocket :: Double -> Color Double
rocket = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
Seaborn.rocket

-- | <<docs/colors/schemes/continuous/seaborn/mako.png>>
mako :: Double -> Color Double
mako :: Double -> Color Double
mako = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
Seaborn.mako

-- | <<docs/colors/schemes/continuous/seaborn/flare.png>>
flare :: Double -> Color Double
flare :: Double -> Color Double
flare = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
Seaborn.flare

-- | <<docs/colors/schemes/continuous/seaborn/crest.png>>
crest :: Double -> Color Double
crest :: Double -> Color Double
crest = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
Seaborn.crest

-- | <<docs/colors/schemes/continuous/seaborn/vlag.png>>
vlag :: Double -> Color Double
vlag :: Double -> Color Double
vlag = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
Seaborn.vlag
-- | <<docs/colors/schemes/continuous/seaborn/icefire.png>>
icefire :: Double -> Color Double
icefire :: Double -> Color Double
icefire = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
Seaborn.icefire

-- | <<docs/colors/schemes/continuous/colorbrewer2/orRd.png>>
orRd :: Double -> Color Double
orRd :: Double -> Color Double
orRd = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_OrRd

-- | <<docs/colors/schemes/continuous/colorbrewer2/puBu.png>>
puBu :: Double -> Color Double
puBu :: Double -> Color Double
puBu = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_PuBu

-- | <<docs/colors/schemes/continuous/colorbrewer2/buPu.png>>
buPu :: Double -> Color Double
buPu :: Double -> Color Double
buPu = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_BuPu

-- | <<docs/colors/schemes/continuous/colorbrewer2/oranges.png>>
oranges :: Double -> Color Double
oranges :: Double -> Color Double
oranges = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_Oranges

-- | <<docs/colors/schemes/continuous/colorbrewer2/buGn.png>>
buGn :: Double -> Color Double
buGn :: Double -> Color Double
buGn = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_BuGn

-- | <<docs/colors/schemes/continuous/colorbrewer2/ylOrBr.png>>
ylOrBr :: Double -> Color Double
ylOrBr :: Double -> Color Double
ylOrBr = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_YlOrBr

-- | <<docs/colors/schemes/continuous/colorbrewer2/ylGn.png>>
ylGn :: Double -> Color Double
ylGn :: Double -> Color Double
ylGn = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_YlGn

-- | <<docs/colors/schemes/continuous/colorbrewer2/reds.png>>
reds :: Double -> Color Double
reds :: Double -> Color Double
reds = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_Reds

-- | <<docs/colors/schemes/continuous/colorbrewer2/rdPu.png>>
rdPu :: Double -> Color Double
rdPu :: Double -> Color Double
rdPu = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_RdPu

-- | <<docs/colors/schemes/continuous/colorbrewer2/greens.png>>
greens :: Double -> Color Double
greens :: Double -> Color Double
greens = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_Greens

-- | <<docs/colors/schemes/continuous/colorbrewer2/ylGnBu.png>>
ylGnBu :: Double -> Color Double
ylGnBu :: Double -> Color Double
ylGnBu = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_YlGnBu

-- | <<docs/colors/schemes/continuous/colorbrewer2/purples.png>>
purples :: Double -> Color Double
purples :: Double -> Color Double
purples = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_Purples

-- | <<docs/colors/schemes/continuous/colorbrewer2/gnBu.png>>
gnBu :: Double -> Color Double
gnBu :: Double -> Color Double
gnBu = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_GnBu

-- | <<docs/colors/schemes/continuous/colorbrewer2/greys.png>>
greys :: Double -> Color Double
greys :: Double -> Color Double
greys = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_Greys

-- | <<docs/colors/schemes/continuous/colorbrewer2/ylOrRd.png>>
ylOrRd :: Double -> Color Double
ylOrRd :: Double -> Color Double
ylOrRd = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_YlOrRd

-- | <<docs/colors/schemes/continuous/colorbrewer2/puRd.png>>
puRd :: Double -> Color Double
puRd :: Double -> Color Double
puRd = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_PuRd

-- | <<docs/colors/schemes/continuous/colorbrewer2/blues.png>>
blues :: Double -> Color Double
blues :: Double -> Color Double
blues = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_Blues

-- | <<docs/colors/schemes/continuous/colorbrewer2/puBuGn.png>>
puBuGn :: Double -> Color Double
puBuGn :: Double -> Color Double
puBuGn = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.sequential_PuBuGn

-- | <<docs/colors/schemes/continuous/colorbrewer2/spectral.png>>
spectral :: Double -> Color Double
spectral :: Double -> Color Double
spectral = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.divisive_Spectral

-- | <<docs/colors/schemes/continuous/colorbrewer2/rdYlGn.png>>
rdYlGn :: Double -> Color Double
rdYlGn :: Double -> Color Double
rdYlGn = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.divisive_RdYlGn

-- | <<docs/colors/schemes/continuous/colorbrewer2/rdBu.png>>
rdBu :: Double -> Color Double
rdBu :: Double -> Color Double
rdBu = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.divisive_RdBu

-- | <<docs/colors/schemes/continuous/colorbrewer2/piYG.png>>
piYG :: Double -> Color Double
piYG :: Double -> Color Double
piYG = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.divisive_PiYG

-- | <<docs/colors/schemes/continuous/colorbrewer2/pRGn.png>>
pRGn :: Double -> Color Double
pRGn :: Double -> Color Double
pRGn = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.divisive_PRGn

-- | <<docs/colors/schemes/continuous/colorbrewer2/rdYlBu.png>>
rdYlBu :: Double -> Color Double
rdYlBu :: Double -> Color Double
rdYlBu = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.divisive_RdYlBu

-- | <<docs/colors/schemes/continuous/colorbrewer2/brBG.png>>
brBG :: Double -> Color Double
brBG :: Double -> Color Double
brBG = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.divisive_BrBG

-- | <<docs/colors/schemes/continuous/colorbrewer2/rdGy.png>>
rdGy :: Double -> Color Double
rdGy :: Double -> Color Double
rdGy = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.divisive_RdGy

-- | <<docs/colors/schemes/continuous/colorbrewer2/puOr.png>>
puOr :: Double -> Color Double
puOr :: Double -> Color Double
puOr = RGB -> Color Double
toColor (RGB -> Color Double) -> (Double -> RGB) -> Double -> Color Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector RGB -> Double -> RGB
clamped Vector RGB
ColorBrewer2.divisive_PuOr