注意:V4 版本改变了写法,应该是 var linear = d3.scaleLinear(); 。
上图用的是d3.v3 ,宽度比例尺和颜色比例尺
var data = [10,40,50,60];
var width = height = 500;
var widthScale = d3.scale.linear()
.domain([0,60])
.range([0,width]);
var colorScale = d3.scale.linear()
.domain([0,60])
.range(['red','blue']);
var canvas = d3.select('body')
.append('svg')
.attr('width',width)
.attr('height',height);
var rect = canvas.selectAll('rect')
.data(data)
.enter()
.append('rect')
.attr('width',function(d){return widthScale(d)})
.attr('height',50)
.attr('fill',function(d){return colorScale(d)})
.attr('y',function(d,i){
return i*60;
})
序数比例尺
如果,定义域和值域不一定是连续的,都是离散的。那就要用到序数比例尺了。
var index = [0, 1, 2, 3, 4];
var color = ["red", "blue", "green", "yellow", "black"];
var ordinal = d3.scale.ordinal() // 生成序数比例尺
.domain(index)
.range(color);
ordinal(0); // 返回 red
ordinal(2); // 返回 green
ordinal(4); // 返回 black