2015-09-08 52 views
0

我正在玩各种D3图表,对于这个特殊的例子,我似乎无法得到网格线显示。我将它与一个类似的例子进行了比较,我已经在线上显示,但我仍然无法理解它。这是我目前所拥有的jsfiddle在D3直方图中不显示网格线

我主要兴趣所以这里的水平网格线是当我添加y轴代码:

var gy = svg.append('g') 
    .attr('class', 'y axis') 
    .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')') 
    .call(yAxis); 

gy.selectAll('g').filter(function(d) { 
    return d; 
}) 
.classed('minor', true); 

回答

0

您可以使用最小报价单位设置水平网格线的大小。宽度应与您的x轴相同宽度* -1:

var yAxis = d3.svg.axis() 
    .scale(yScale) 
    .tickFormat(formatNumber) 
    .tickSize(-width) 
    .ticks(3) 
    .orient('left'); 
+0

这很好用!你能解释为什么宽度应该是X轴的宽度* -1吗? – ddoria

+0

所以我不是100%肯定的技术性,但我相信默认情况下是从y开始并且走向左侧。所以为了让它们向右移动,需要将它们发送到tick的负x坐标空间中。对不起,如果我没有解释得好:) –

+0

不用担心。如果这就是幕后的工作方式,那实际上是有道理的。再次感谢! – ddoria