没有, x 轴上14
有两个s。8
这是因为该函数会根据 API 参考bins
将范围划分= 14 - 1 = 13
为多个14
区间:
bins 可以指定为一个数字,在这种情况下,值的范围将被均匀地分成给定数量的 bins。或者,bins 可以是一个阈值数组,定义了 bins;指定的数组必须包含最右边(上)的值,因此为 n 个 bin 指定 n + 1 个值。...
在解决这个问题之前,我猜你面临的第二个问题是如果rangeDefault
有负值,那么有些值不会被绘制。为了解决这个问题,不知道它的确切需求,我将从删除以下内容开始:
rangeDefault[0] = 0; //All histograms start from 0 <-- REMOVED
然后要解决第一个问题,请使用第二种形式的参数,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
Moving the axis before the chart in the DOM because of how SVG is laid out affects its 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");
And finally making the major tickSize
on the y-axis -(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);