xScale 使用 ordinal(), 屬於離散範疇
var xScale = d3.scale.ordinal() .domain(d3.range(dataset.length)) //離散定義域 .rangeRoundBands([0, w], 0.05); //離散值域 var yScale = d3.scale.linear() //連續 .domain([0, d3.max(dataset)]) .range([0, h]);
svg.selectAll("rect").data(dataset).enter().append("rect") //修改起始 X 座標和設定寬度 //rangeRoundBands() v rangeBand() .attr("x", function(d, i) {return xScale(i);}) .attr("width", xScale.rangeBand()) //修改起始 Y 座標和設定高度 .attr("y", function(d) {return h - yScale(d);}) .attr("height", function(d) { return yScale(d); //填滿顏色方式不變 }).attr("fill", function(d) { return "rgba(" + (85 + d * 3) + ",66,54,1)"; });
svg.selectAll("text").data(dataset).enter().append("text").text(function(d) { return d; }).attr("x", function(d, i) { return xScale(i) + xScale.rangeBand() / 2; }).attr("y", function(d) { return h - yScale(d) + 15; }).attr("text-anchor", "middle").attr("font-family", "sans-serif").attr("font-size", "8px").attr("fill", "white");