D3时间刻度 - 刻度(计数)产生错误,省略刻度(计数)不产生错误

时间:2015-11-10 14:10:49

标签: javascript d3.js

我正在实现一个时间轴功能,并使用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

1 个答案:

答案 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

希望这有帮助!