2016-08-25 26 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方法之間的差異。