2013-10-08 36 views
9

我想用不同的主要和次要刻度来绘制一个轴。D3的主要和次要蜱与D3?

这个例子http://bl.ocks.org/vjpgo/4689130大概是我想要的,但我不能让它与D3的V3一起工作。

.subDivide()已弃用的方法?我在目前的文档中看不到它:https://github.com/mbostock/d3/wiki/SVG-Axes

如果是这样,在V3的V3中绘制主要和次要刻度的最佳方法是什么?我应该画两个完全不同的轴?

+0

是折旧如[注] [这里](https://github.com/mbostock/d3/releases/tag/v3.3.0) – user1614080

回答

19

最新版本没有提供任何绘制次要刻度的内容,与以前的版本一样明确,但不需要绘制另一个轴来实现所需内容。您可以使用刻度生成更多刻度,然后使用熟悉的.data()模式为尚未存在线条的线绘制线条。

xaxisg.selectAll("line").data(x.ticks(64), function(d) { return d; }) 
    .enter() 
    .append("line") 
    .attr("class", "minor") 
    .attr("y1", 0) 
    .attr("y2", -60) 
    .attr("x1", x) 
    .attr("x2", x); 

xaxisg是以前绘制轴的容器。量表用于生成所需的滴答数量,并通过数据本身进行匹配。这意味着当使用.enter()选项时,不会为已经存在的那些勾选额外的勾号。

完成jsfiddle here

+0

这很好,谢谢。 – Richard