如何更正d3中的范围?

时间:2016-08-25 10:16:15

标签: javascript d3.js

这是我试图实现的图表的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()和其他修改。 我该如何解决这个问题?任何提示或建议都非常感谢:)

1 个答案:

答案 0 :(得分:0)

我不知道为什么你有关于layers的空数组。所以,这是没有显示出来的。

但正如你所说,蜱不能平均分为x范围的问题。

fixed fiddle here

我刚刚修改了从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的一部分。

查看v3v4方法之间的差异可能是全面的信息。