下面的代码显示d3的几种颜色插值。
关于说明文档 https://github.com/mbostock/d3/wiki/Transitions#d3_interpolateHcl
示例
<body>
<div id="color" class="clear">
<span>Linear Color Interpolation<br></span>
</div>
<div id="color-diverge" class="clear">
<span>Hsl<br></span>
</div>
<div id="rgb" class="clear">
<span>rgb<br></span>
</div>
<div id="lab" class="clear">
<span>lab<br></span>
</div>
<script type="text/javascript">
var max = 21, data = [];
var color1="#7d57ba";
var color2="#eb6502";
var colorScale = d3.scale.linear() // <-A
.domain([0,0.5,1])
.range([color1,"#e6edff", color2]);
var polate=d3.interpolateRgb(color1,color2);
var rgb=d3.interpolateHsl(color1,color2);
var lab=d3.interpolateLab(color1,color2);
function divergingScale(pivot) { // <-B
var divergingColorScale = d3.scale.linear()
.domain([0, pivot, max]) // <-C
.range(["#7d57ba", "#e6edff", "#eb6502"]);
return divergingColorScale;
}
for (var i = 0; i < max; ++i) data.push(i);
function render(data, scale, selector) { // <-D
d3.select(selector).selectAll("div.cell")
.data(data)
.enter()
.append("div")
.classed("cell", true)
.append("span");
d3.select(selector).selectAll("div.cell")
.data(data)
.exit().remove();
d3.select(selector).selectAll("div.cell")
.data(data)
.style("display", "inline-block")
.style("background-color", function(d){
return scale(d/20); // <-E
})
.select("span")
.text(function(d,i){return i;});
}
render(data, colorScale, "#color");
render(data, polate, "#color-diverge");
render(data,rgb,"#rgb");
render(data,lab,"#lab");
</script>
<div class="control-group clear">
<button onclick="render(data, divergingScale(5), '#color-diverge')">Pivot at 5</button>
<button onclick="render(data, divergingScale(10), '#color-diverge')">Pivot at 10</button>
<button onclick="render(data, divergingScale(15), '#color-diverge')">Pivot at 15</button>
<button onclick="render(data, divergingScale(20), '#color-diverge')">Pivot at 20</button>
</div>
</body>
示例结果