2013-03-04 13 views
6

Ho un ampio set di dati di serie temporali che devo rappresentare graficamente e sto provando a usare D3 per farlo. Ho in programma di fare in modo che il mio grafico abbia il tempo dell'asse x e consenta il movimento del grafico nella direzione x. Voglio che il grafico carichi/mostri solo i punti che esistono nell'intervallo di tempo corrente sullo schermo.D3 rappresentazione grafica di porzioni selettive del set di dati

Ad esempio, se il mio set di dati ha ore 1-100, ma il grafico inizia con i tempi 1-10 mostrati, il grafico deve rappresentare solo i punti 1-10. Quindi l'utente può spostarsi a destra e vedere i tempi 5-15 e il grafico dovrebbe aggiornarsi di conseguenza.

Qualcuno può spiegarmi come questo potrebbe essere fatto tramite d3? Sto attraversando un periodo difficile a superare l'intesa da un intero set di dati che viene caricato in una sola volta e grafico immediatamente al grafico selettivo di sottoinsiemi dei dati.

risposta

2

Penso che stiate cercando la funzione selection.filter(). Ad esempio è possibile disporre di:

var allNodes = vis.selectAll("Nodes").data(data.nodes); 
var validNodes = allNodes.filter(function(d){return (d.time>1 && d.time <10)}); 
//use normal graph functions on validNodes. 

È anche possibile applicare il filtro direttamente sulla serie di nodi.

+0

Grazie per la risposta. Ha senso. Posso sapere dinamicamente come impostare i limiti per la funzione filtro? Idealmente mi piacerebbe ottenere i limiti dell'asse x, se segui. Se si scorre su 5-15, il limite dovrebbe essere d.time> = 5 && d.time <= 15 ecc. – cdietschrun

+0

Dovresti riuscire a trovarlo nell'API: https://github.com/mbostock/d3/wiki/Asce SVG # Asse wiki. Altrimenti non lo so. –

+1

Ho avuto fortuna con x.domain() dandomi il minimo e il massimo dell'asse x. Lo contrassegnerò come corretto perché dovrò utilizzare il filtro con le informazioni del dominio. – cdietschrun

Problemi correlati