2014-09-26 23 views
9

Disclaimer: Non ho idea di cosa sto facendo. Seriamente, adoro i dati e penso che farlo da solo sarebbe un ottimo modo per imparare a programmare e utilizzare i database e creare app web come un ragazzo fantastico. Sono stato in questa ricerca di risposta per l'ultimo giorno, e tutti gli esempi che ho potuto trovare non riuscivo a lavorare con il mio codice.Data ordinamento con d3.js

Ecco un raccoglitore di paste del codice completo e dei dati che sto utilizzando. E 'la tabella di linea del campione trovato sul github d3.js con i miei dati compilati http://pastebin.com/7aW6wegd

JSON è venuta da un database CouchDB

posso ottenere le linee per disegnare, ma sono un disastro.:

enter image description here

Credo che questo sia causato dalle date non ordinamento correttamente, dal momento che in console sono elencati in ordine. Non riesco a capire come ottenere la data per ordinare correttamente. L'uso di d3.time.format genera errori (puoi vederlo nel codice che ho preso dal grafico a linee di esempio, lo usano per analizzare le date. Usarlo con i miei dati genera un errore, anche dopo che provo a girare i timestamp alle date) e non riesco a capire come ottenere le date per ordinare in couchdb sia.

+3

Questo sembra abbastanza buono per una prima prova onestamente. Basta ordinare le date prima di definire l'oggetto data. https://github.com/mbostock/d3/wiki/Array –

risposta

11

Perché non basta ordinare i dati dopo il forEach dove si popolano le proprietà date? Ecco un'implementazione di base di un selezionatore di un array di oggetti:

var data = [ 
     {date: new Date(2000)}, 
     {date: new Date(1000)} 
    ]; 

function sortByDateAscending(a, b) { 
    // Dates will be cast to numbers automagically: 
    return a.date - b.date; 
} 

data = data.sort(sortByDateAscending); 

C'è un bel documentation per il Array.prototype.sort.

+2

Grazie. Questo ha funzionato perfettamente. Ho provato a scrivere/prendere in prestito alcune funzioni di ordinamento che non hanno funzionato. Questa volta è 2 o 3 righe più corte di quella più semplice che ho trovato. – Trel

+0

Non so perché restituisce mm/gg/aaaa quando lo standard internazionale è aaaa/gg/mm –

+0

@Claudiu Per qualche motivo l'OP ha deciso di formattare le date con 'd3.time.format ("% x ") '(vedi la riga 46 su pastebin). Secondo i documenti, esso formatta le date come "% m /% d /% Y", vedi https://github.com/mbostock/d3/wiki/Time-Formatting#format Puoi scegliere un altro formato se lo desideri. – Oleg