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 colors spaces are designed with perception 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 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: ```javascript var steelblue = d3.lab("#4682b4"); var steelblue = d3.hcl("hsl(207, 44%, 49%)"); ``` 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/).