Próbuję utworzyć wykres w czasie rzeczywistym za pomocą nvd3.js, który byłby okresowo aktualizowany i miał wrażenie, że dane są przetwarzane w czasie rzeczywistym.Wykres liniowy w czasie rzeczywistym z nvd3.js
Na razie udało mi się stworzyć funkcję, która okresowo aktualizowałaby wykres, ale nie udaje mi się uzyskać płynnego przejścia między "stanami", takimi jak przejście w lewo.
Here co zrobiłem używając nvd3.js, tutaj kod jest interesujący:
d3.select('#chart svg')
.datum(data)
.transition().duration(duration)
.call(chart);
Teraz byłem w stanie wyprodukować co chcę używając d3.js ale wolałbym, aby móc wykorzystaj wszystkie narzędzia dostarczone przez nvd3.js. Here co chciałbym produkować przy użyciu nvd3
Kod interesujący dla przejścia z wykorzystaniem d3.js jest:
function tick() {
// update the domains
now = new Date();
x.domain([now - (n - 2) * duration, now - duration]);
y.domain([0, d3.max(data)]);
// push the accumulated count onto the back, and reset the count
data.push(Math.random()*10);
count = 0;
// redraw the line
svg.select(".line")
.attr("d", line)
.attr("transform", null);
// slide the x-axis left
axis.transition()
.duration(duration)
.ease("linear")
.call(x.axis);
// slide the line left
path.transition()
.duration(duration)
.ease("linear")
.attr("transform", "translate(" + x(now - (n - 1) * duration) + ")")
.each("end", tick);
// pop the old data point off the front
data.shift();
}
Zgadzam się ze wszystkim, co mówisz. Jednak mój problem polega na użyciu nvd3 zamiast d3. Pierwszy link w moim pytaniu pokazuje, co mam na razie na nvd3, a drugi pokazuje w pełni działającą wersję, którą mam z d3.js. Twoja druga metoda jest tą, której używam do rozwiązania d3. –
ok, mój zły ... twoje rozwiązanie już to robi z d3 –