D3 2.10.0 adds support for CIE [L\*a\*b\*](http://en.wikipedia.org/wiki/Lab_color_space) and [HCL](http://en.wikipedia.org/wiki/CIELUV). These perceptually-motiviated colors spaces are designed with humans (rather than computers) in mind. RGB and HSL interpolation can cause unintentional grouping due to parts of the color space appearing more visually similar; L\*a\*b\* and HCL, in contrast, are perceptually uniform. For more information, see Gregor Aisch’s post [How To Avoid Equidistant HSV Colors](http://vis4.net/blog/posts/avoid-equidistant-hsv-colors/) and Drew Skau’s post [Dear NASA: No More Rainbow Color Scales, Please](http://blog.visual.ly/rainbow-color-scales/). You can create L\*a\*b\* or HCL colors directly using d3.lab or d3.hcl. For example: ```javascript var steelblue = d3.lab(52, -4, -32); var steelblue = d3.hcl(-97, 32, 52); ``` You can also convert from RGB or HSL. This is useful for creating brighter or darker colors, again with uniform changes in perception: ```javascript var lightsteelblue = d3.lab("#4682b4").brighter(); var darksteelblue = d3.hcl("hsl(207, 44%, 49%)").darker(); ``` Best of all, you can use d3.interpolateLab or d3.interpolateHcl in conjunction with [quantitative scales](https://github.com/mbostock/d3/wiki/Quantitative-Scales) and [transitions](https://github.com/mbostock/d3/wiki/Transitions): ```javascript var color = d3.scale.linear() .range(["steelblue", "brown"]) .interpolate(d3.interpolateHcl); ``` L\*a\*b\* and HCL interpolation is a convenient way to implement color scales that are comparable in quality to [Colorbrewer](http://colorbrewer2.org/).