Sto cercando di utilizzare Rickshaw per creare un bel grafico segnaposto che mostra l'aggiornamento in tempo reale con dati casuali, in questo modo:aggiornamento live grafico Rickshaw
var series = [[], []];
var random = new Rickshaw.Fixtures.RandomData(150);
for(var i = 0; i < 80; i++) {
random.addData(series);
}
var throughput = new Rickshaw.Graph({
element: document.querySelector("#throughput_chart"),
width: "300",
height: "200",
renderer: "line",
series: [{
color: "gold",
data: series[0]
}]
});
var alerts = new Rickshaw.Graph({
element: document.querySelector("#alerts_chart"),
width: "300",
height: "200",
renderer: "line",
series: [{
color: "red",
data: series[1]
}]
});
throughput.render();
alerts.render();
setInterval(function() {
random.addData(series);
throughput.update();
alerts.update();
/* XXX: This causes the data to stop drawing properly
series.forEach(function(s) {
s.shift();
});
*/
}, 1000);
Questo funziona, fatta eccezione per la parte commentata. Così com'è, continua ad aggiungere dati, il che significa che il grafico diventa sempre più affollato. Mi piacerebbe essere in grado di rimuovere il primo oggetto ogni volta che aggiungo un nuovo oggetto alla fine, in modo da mantenere il grafico con lo stesso numero di punti dati, ma quando inserisco quel codice in esso rapidamente il grafico non per visualizzare tutti i dati, anche se console.log
mostra che la matrice è ancora piena di dati.
Come posso fare in modo che funzioni, in modo da visualizzare solo un numero fisso di punti dati alla volta?
quindi il segreto è series.addData() sembra –