2013-12-17 15 views
11

Problemi con la formattazione dell'asse x di questo grafico serie temporali utilizzando d3 js.d3 scala temporale x asse con timestamp unix

Ecco un esempio di lavoro: http://tributary.io/inlet/7798421

Il problema: posso vedere solo 1 data (etichetta) sul mio asse x, indipendentemente # totale di zecche specificati. Come posso visualizzare l'ora sull'asse x con 4-6 tick?

MODIFICA: Soluzione sotto grazie a Lars.

Ecco il mio tempo in UTC:

var data = [ 
    {"time": 1387212120, "open": 368, "close": 275, "high": 380, "low": 158}, 
    {"time": 1387212130, "open": 330, "close": 350, "high": 389, "low": 310}, 
    {"time": 1387212140, "open": 213, "close": 253, "high": 289, "low": 213}]; 

data.forEach(function(d){ d.time = new Date(d.time * 1000) }); 

E poi D3 accettarla, in formato predefinito, oppure è possibile personalizzare.

risposta

24

Il problema è che gli oggetti Javascript Date (in cui si sta convertendo in modo implicito i timestamp) non sono timestamp in secondi, ma in millisecondi. Se moltiplica tutti i tuoi valori di tempo per 1000, funziona.

Esempio completo here. Ho anche reso esplicita la conversione in Date s.

+0

Eccellente, prima esperienza con il tempo come asse X, soluzione incredibilmente concisa e semplice per farlo funzionare. Grazie. – DeBraid

+0

Molto utile ed elegante, grazie. –