2012-12-07 11 views
9

Chciałbym zrobić wykres rozproszenia za pomocą D3 z możliwością oglądania tylko małej sekcji na raz za pomocą pewnego rodzaju suwaka na osi X. Czy istnieje metoda w javascript, w której mogę skutecznie buforować dane i szybko uzyskać dostęp do elementów, gdy użytkownik przewija w lewo lub w prawo?D3 Scatterplot z tysiącami punktów danych

Mój cel jest podobny do tego przykładu protovis here, ale z 10 razy większą ilością danych. Ten przykład dławi się, gdy tworzę tyle punktów danych.

Odpowiedz

6

Zrobiłem wykres rozrzutu z około 10k punktów, w których musiałem interaktywnie filtrować sekcje wykresu. dzielę szereg wskazówek, które pracowały dla mnie, co mam nadzieję, mam nadzieję, że niektóre z nich mogą pomóc też:

  • użyć funkcji kluczowym dla operatora .data() jak to odbywa się pod koniec tego tutorial. Zaletą używania kluczy jest to, że nie trzeba aktualizować elementów, które się nie zmieniają.
  • Nie związane z d3, ale podzieliłem moją przestrzeń danych na siatkę, tak że każdy punkt danych jest powiązany z jedną komórką (innymi słowy, każda komórka jest indeksem do zbioru punktów). W ten sposób, gdy potrzebowałem uzyskać dostęp od, powiedzmy, od x_0 do x_1, wiedziałem, jakie komórki potrzebowałem, i stąd mogłem uzyskać dostęp do znacznie bardziej wyrafinowanego zbioru możliwych punktów danych (unikając iteracji we wszystkich punktach).
  • Unikaj przejścia: z moich osobistych doświadczeń .transition() nie jest bardzo gładka, kiedy tysiące elementów SVG wybiera się (może być lepiej w nowszych wersjach lub szybszych procesorów)
  • W moim przypadku było to bardziej wygodne, aby punkty niewidoczne (.attr("display","none")) lub widoczne zamiast usuwania i tworzenia elementów SVG (zastanawiam się, czy to też jest bardziej efektywne)
Powiązane problemy