Chroma JS

by taylorRichie

HTML

<script src="//d3js.org/d3.v3.min.js"></script>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/1.3.3/chroma.min.js"></script>
<div class="container-fluid" id='main'>
    <div class="row">
        <div class="col-md-12">
           <div id="palette"></div> 
        </div>
    </div>
</div>

CSS

#main{margin-top: 40px;}

JavaScript

var N, displayPalette, pCool;

displayPalette = function(data, f) {
  var colors, pal, square, svg, w;
  if (f) {
    colors = data.map(function(d) {
      return f(d).css();
    });
  } else {
    colors = data;
  }
  w = Math.floor(400 / colors.length);
  pal = d3.select('#palette');
  svg = pal.append('svg').attr('width', 400).attr('height', w);
  square = svg.selectAll('rect').data(colors);
  square.enter().append('rect');
  return square.attr({
    x: function(d, i) {
      return i * w;
    },
    y: 0,
    height: w,
    width: w,
    fill: function(d) {
      return d;
    }
  });
};

pCool = ['#041959', '#005AA5', '#0B7D8C', '#FAF4C3'];
pWarm = ['#33023F', '#580178', '#B6256C', '#FFDC6C', '#FAF4C3'];

N = 10;

displayPalette(chroma.scale(pCool).correctLightness(false).colors(N));
displayPalette(chroma.scale(pCool).correctLightness(true).colors(N));
displayPalette(chroma.bezier(pCool).scale().correctLightness(true).colors(N));

displayPalette(chroma.scale(pWarm).correctLightness(false).colors(N));
displayPalette(chroma.scale(pWarm).correctLightness(true).colors(N));
displayPalette(chroma.bezier(pWarm).scale().correctLightness(true).colors(N));