这是我试图实现的图表的jsfiddle: https://jsfiddle.net/aaz15/3msqnuk2/
问题在于我无法正确显示图表,我认为它与x的范围有关。我受到以下启发:http://bl.ocks.org/mbostock/3943967。
我认为问题在于这一行:
var rect = layer.selectAll("rect")
.data(function(d) { return d; })
.enter().append("rect")
.attr("x", function(d) { return x(d.x); })
.attr("y", height)
.attr("width", x.range()) //here
已经为x定义了范围,原始实现中的rangeband()
已弃用,有利于range()
和其他修改。
我该如何解决这个问题?任何提示或建议都非常感谢:)
答案 0 :(得分:0)
我不知道为什么你有关于layers
的空数组。所以,这是没有显示出来的。
但正如你所说,蜱不能平均分为x
范围的问题。
我刚刚修改了从v3更改为v4的方法。
// your scale
var x = d3.scaleOrdinal()
.domain(d3.range(m))
.range([0, width], .08);
// it should be changed to..
var x = d3.scaleBand()
.domain(d3.range(m))
.rangeRound([0, width])
.paddingInner(.08);
自v4以来, scaleBand
的方法不再是scaleOrdinal
的一部分。