はなく、x 軸に14
2 つの があります。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);