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

D3 time scale – ticks(count) yields error, omitting ticks(count) yields no error

本文关键字:错误 计数 count -刻度 D3 时间刻度      更新时间:2023-09-26

我正在实现一个时间轴功能,并使用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()被移除时,没有错误,并且天平按预期工作。根据ticks文档,指定ticks计数是合法的。知道为什么会出现错误吗?该代码与Mike Bostock的时间刻度块几乎相同。

我在这里做了一个jsfiddle:http://jsfiddle.net/connorgr/4zgx9t59/1/

您的代码:

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);

此处为工作代码

希望这能有所帮助!