はなく、x 軸に142 つの があります。8これは、API リファレンスに従ってbins、関数が範囲= 14 - 1 = 13を慎重に14間隔に分割するためです。
ビンは数値として指定できます。この場合、値の範囲は指定された数のビンに均等に分割されます。または、ビンは、ビンを定義するしきい値の配列である場合があります。指定された配列には右端 (上) の値が含まれている必要があるため、n 個のビンに対して n + 1 個の値を指定します。...
この問題を解決する前に、あなたが直面している 2 番目の問題は、rangeDefaultに負の値がある場合、一部の値がプロットされないことだと思います。その問題を修正するために、その正確な必要性を認識していないため、次のものを削除することから始めます。
rangeDefault[0] = 0; //All histograms start from 0 <-- REMOVED
次に、最初の問題を修正するには、次のように 2 番目の形式の引数を使用しbinsます。
var bins = [];
for(var ii = settings.range[0], jj = 0; ii <= settings.range[1] + 1; ii++, jj++)
bins[jj] = ii;
var data = d3.layout.histogram()
.bins(bins)(settings.data);
これが主要なクエリに対処することを願っています。
ここに示すように、薄い灰色のインジケーター ラインを追加するのはかなり簡単です。変更点は次のとおりです。
vis.css
.y.axis line.tick { opacity: .3; }
vis.js
SVG がどのようにレイアウトされているかという理由で、DOM のグラフの前に軸を移動すると、次のように影響しますz-index。
var gEnter = svg.enter().append("svg").append("g");
gEnter.append("g").attr("class", "x axis");
gEnter.append("g").attr("class","y axis");
gEnter.append("g").attr("class", "bars");
最後tickSizeに、y 軸をメジャーにします-(width - margin.right - margin.left)。
yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickSubdivide(true)
.tickPadding(5)
.ticks(10)
.tickSize(-(width - margin.right - margin.left), 2, 8);