2013-03-09 96 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