我正在实现一个时间轴功能,并使用D3中的d3.time.scale对象创建一个轴。这是代码:
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()
后,没有错误,并且缩放按预期工作。根据{{3}}指定刻度计数是合法的。知道为什么会抛出这个错误吗?代码与ticks documentation几乎相同。
我在这里做了一个jsfiddle:Mike Bostock's time scale block
答案 0 :(得分:3)
您的代码:
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
希望这有帮助!