没有14
,在x轴上有两个8
s。这是因为bins
函数将努力划分范围= 14 - 1 = 13
成14
间隔as per the API reference:
的二进制位可被指定为一个数字,在这种情况下的值的范围将被均匀地分割 到箱中的给定数目的。或者,箱可以是一组阈值, 定义箱;指定的数组必须包含最右边的(上)值,因此 指定n个bin的n + 1个值。 ...
在解决这个问题之前,我猜你正面临的第二个问题是,如果rangeDefault
具有负值,那么某些值不会被绘制。为了解决这个问题,是不知道它的确切需要,我会通过移除启动以下:
rangeDefault[0] = 0; //All histograms start from 0 <-- REMOVED
然后解决的第一个问题,使用参数的第二种形式为bins
as shown here:
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);
我希望这解决了主要查询。
添加浅灰色指示线相当容易,as shown here。这些变化是:
vis.css
.y.axis line.tick { opacity: .3; }
可见。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");
最后使在y轴-(width - margin.right - margin.left)
主要tickSize
:
yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickSubdivide(true)
.tickPadding(5)
.ticks(10)
.tickSize(-(width - margin.right - margin.left), 2, 8);
看起来不错,我认为http://jsfiddle.net/EXfCu/是指标线的小提琴(你可能错过了添加正确的链接)。另外,当用x轴放置时,指示线倾向于“溢出”。有关如何包含它们的想法? –
对这个链接抱歉,我已经在回答中纠正了这个问题。另外,我已经修复了指标线的溢出问题,问题是我忘记调整图表的边缘。 –