2013-03-09 94 views
2

我正在使用d3 JS库来绘制一些图。它工作正常,但我困住了一个奇怪的问题,我一直在努力争取一个小时 - 我无法设置x轴值。这里是图(我增加了一个警报,将为您展示的数据格式):如何在d3 Javascript图形中设置x轴值?

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

我想在x轴上显示时间,但由于某些原因,我不能看到任何地方代码,它使用的是十进制值,所以不是2006年,而是0.006 - 我不知道这是什么形式,就像它取出第一位数字并将其余的数字除以100?!

如果有人能指向我这样做的代码行,那很好,我可以从那里拿走它。

回答

1

正如另一个答案中指出,处理时间值的更好方法是明确使用时间尺度。但是,要实现您想要的内容,只需明确指定x轴的格式即可。也就是说,

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

添加

.tickFormat(d3.format("d")); 
+0

谢谢,这工作,积分奖励。 – jovan 2013-03-15 10:12:50

0

可以,如果是这样,你可能需要

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 

,或与此有关parseDate = d3.time.format("%Y") not working

如果你需要解析日期

.tickFormat(function(d) { 
     var fmt = d3.time.format("%Y"); 
     return format.parse(d).toString() 
    }); 
+0

这确实改变了x轴标签的备考 - 但它把每一个标签为'星期四1970年1月1日1点00分02秒GMT + 0100(中欧标准时间)'。我想我可能需要摆弄那之前的'var x = d3.time.scale()'行。 – jovan 2013-03-13 10:48:34