Używam d3.js do wizualizacji timeseries-danych wysłanych z mojego zaplecza python (przez Websocket). Zwykła ilość danych dla jednego wykresu wynosi około 120 wpisów (2 godziny danych, 1 wpis na minutę). To działa dobrze, aktualizuje się co minutę.Big d3.js wykres, płótno lub renderowanie po stronie serwera?
Powinna również być w stanie wizualizować dane z miesiąca lub więcej (może to być nawet rok), również w odstępach 1-minutowych. Renderowanie takiej ilości danych jest zbyt duże dla SVG.
myślę o następujących alternatyw:
- czynią je w płótna. Czy to naprawdę jest o wiele szybsze?
- Przejście do innej biblioteki, takiej jak Highchart.js (zobaczyłem wersję demonstracyjną z wpisami ~ 50k)
- Rendering SVG/JPG/PNG na serwerze. Dowolne doświadczenie w renderowaniu serwera d3.js po stronie z np. phantom.js? Chciałbym ponownie wykorzystać już napisane modele graficzne. Ale może to być również dowolna inna biblioteka, która jest w stanie renderować dane (generować wykresy za pomocą pythona).
Co byś polecił?
Chciałbym argumentować, aby przejść z super cool [rendering SVG plików na kliencie] (http://net.tutsplus.com/tutorials/why-arent-you-using-svg/) podejście. – Droogans
@Droogany Tak, już robię to dla małych wykresów. Ale moje problemy to duże wykresy (z ogromną ilością danych). – Beastcraft
Hmmm ... d3 powinien działać dobrze z 120 punktami danych. Jakie problemy masz z rozwiązaniem d3? Canvas świetnie prezentuje wykresy zmieniające się z sekundy na sekundę - tak, jest to bardzo szybkie. Ale nie jest silny w zakresie interaktywności (jak drążenia w dół lub wyskakujące notatki informacyjne). Jeśli masz tabele statyczne do zaprezentowania (wykresy, które zostały zapisane na obrazie), płótno może zostać rozpoczęte od przedstawienia statycznego obrazu wewnątrz płótna, a następnie aktualizacji płótna zgodnie ze zaktualizowanymi punktami danych (wspomnianą wielokrotnością użycia). – markE