2015-11-10 93 views
1

我正在实现时间轴功能,并使用D3中的d3.time.scale对象来生成轴。下面的代码:D3时间尺度 - 滴答(计数)产生错误,省略滴答(计数)不会产生错误

var t = 1066555; 

var xd = [new Date(t-10000), new Date(t)], 
    x = d3.time.scale() 
     .domain(xd) 
     .range([0, 300]) 
     .ticks(10); 

var xaxis = d3.svg.axis().scale(x); 

var svg = d3.select('body').append('svg').attr('height', 90).attr('width', 300); 

svg.append('g').attr('class', 'x axis').call(xaxis); 

事情很好地工作,直到我添加ticks()规模初始化。当添加时,.call(xaxis)抛出Uncaught TypeError: scale.copy is not a function。当ticks()被删除时,没有错误,并且规模按预期工作。根据ticks documentation指定计数蜱是合法的。任何想法为什么这是抛出一个错误?该代码与Mike Bostock's time scale block几乎相同。

我做了这里的jsfiddle:http://jsfiddle.net/connorgr/4zgx9t59/1/

回答

2

您的代码:

x = d3.time.scale() 
     .domain(xd) 
     .range([0, 300]).ticks(10); 
var xaxis = d3.svg.axis().scale(x) 

应该在轴上添加如下

x = d3.time.scale() 
     .domain(xd) 
     .range([0, 300]) 

var xaxis = d3.svg.axis().scale(x).ticks(10); 

工作代码here

希望这可以帮助!