【问题标题】:D3 time scale – ticks(count) yields error, omitting ticks(count) yields no errorD3 时间尺度 - ticks(count) 产生错误,省略 ticks(count) 不会产生错误
【发布时间】:2015-11-10 14:10:49
【问题描述】:

我正在实现时间线功能,并使用 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 documentation,指定滴答计数是合法的。知道为什么这会引发错误吗?该代码与Mike Bostock's time scale block 几乎相同。

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

【问题讨论】:

    标签: javascript d3.js


    【解决方案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);
    

    工作代码here

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2020-10-20
      • 1970-01-01
      • 2020-06-07
      • 2014-08-23
      • 2017-10-16
      • 2011-10-06
      • 1970-01-01
      • 2020-12-30
      相关资源
      最近更新 更多