我正在使用 d3.js 创建类似于http://mbostock.github.com/d3/ex/stack.html的堆叠条形图,其中包含一些附加功能。我能够添加标签和网格,但我是在实现对数刻度时遇到一些问题。我在用
d3.scale.log().domain([minNum,maxNum]).range([height,0])
但我不知道如何使用堆叠图来实现它,代码如下:
var vis = d3.select("#chart")
.append("svg")
.attr("width", width)
.attr("height", height + margin);
var layers = vis.selectAll("g.layer")
.data(data)
.enter().append("g")
.style("fill", function(d, i) { return color(i / (n - 1)); })
.attr("class", "layer");
var bars = layers.selectAll("g.bar")
.data(function(d) { return d; })
.enter().append("g")
.attr("class", "bar")
.attr("transform", function(d) { return "translate(" + x(d) + ",0)"; });
bars.append("rect")
.attr("width", x({x: .9}))
.attr("x", 0)
.attr("y", y1)
.attr("height", function(d) { return y0(d) - y1(d); });
我知道它处理: .attr("height", function(d) { return y0(d) - y1(d); });
任何帮助都会很棒。