2

我正在使用 d3 JS 库来绘制一些图表。它工作正常,但我陷入了一个我一直在努力解决一个小时的奇怪问题 - 我无法设置 x 轴值。这是图表(我添加了一个警报,将显示数据格式):

http://jovansfreelance.com/bikestats/d3/tipsy.php

我希望 x 轴显示年份,但由于某种原因,我在代码中看不到任何地方,而是使用十进制值,所以它不是 2006,而是 .006 - 我不知道这是从哪里出现的,就像它取出第一个数字并将其余数字除以 100 一样?!

如果有人可以将我指向正在执行此操作的代码行,那很好,我可以从那里获取它。

4

2 回答 2

1

正如另一个答案中所指出的,处理时间值的更好方法是显式使用时间尺度。但是,要达到您想要的效果,明确指定 x 轴的格式就足够了。也就是说,对

var xAxis = d3.svg.axis()
        .scale(x)
        .tickSize(h - margin * 2)
        .tickPadding(10)
        .ticks(7)

添加

.tickFormat(d3.format("d"));
于 2013-03-14T21:57:01.757 回答
0

可能与此parseDate = d3.time.format("%Y") 不起作用有关

如果是这样,您可能需要

d3.svg.axis()
   .scale(x)
   .tickSize(h - margin * 2).tickPadding(10).ticks(7)
   .tickFormat(function(d) { return d.toString(); }); // force the date value into a string

或者,如果您需要解析日期

   .tickFormat(function(d) { 
      var fmt = d3.time.format("%Y"); 
      return format.parse(d).toString() 
    });
于 2013-03-12T23:26:50.907 回答