2016-08-25 69 views
0

这里是图我想实现的的jsfiddle: https://jsfiddle.net/aaz15/3msqnuk2/如何更正d3中的范围?

的问题是,我无法正确显示图表,我相信这是与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

它使用'scaleBand'和'bandwidth()'完成。但是,在任何事情之前,检查你的“图层”......你不会去任何空阵列。 –

回答

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); 

scaleBand的方法并不的scaleOrdinal任何更多因为v4的部件。

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