Мне нужны предложения по использованию d3.js для визуализации больших данных. Я извлекаю данные из hbase и сохраняю в json-файле для визуализации с использованием d3.js. Когда я вытягиваю данные за несколько часов, размер json-файла составляет около 100 МБ и может быть легко визуализирован с помощью d3.js, но фильтрация с использованием dc.js и crossfilter происходит немного медленно. Но когда я вытаскиваю набор данных за 1 неделю, размер json-файла становится больше 1 ГБ и пытается визуализировать с помощью d3.js, dc.js и crossfilter, тогда визуализация не работает должным образом, и фильтрация также невозможна. Может ли кто-нибудь дать мне представление о том, есть ли хорошее решение для этого или мне нужно работать на другой платформе вместо d3?d3.js не может визуализировать большой набор данных
ответ
Я определенно согласен с тем, что раньше говорили Марк и Гордон. Но я должен добавить то, что я узнал за последние месяцы, когда я расширил панель dc.js, чтобы иметь дело с довольно большими наборами данных.
Один из узких мест, как указано, размер ваших наборов данных, когда он переводится в тысячи элементов SVG/DOM или Canvas. Холст легче в браузере, но у вас все еще есть огромное количество элементов в памяти, каждый со своими атрибутами, событиями щелчка и т. Д.
Вторым узким местом является сложность данных. Реактивность dc.js зависит не только от d3.js, но и от crossfilter.js. Если вы проверите the Crossfilter example dashboard, вы увидите, что размер данных, которые они используют, впечатляет: более 230000 записей. Однако сложность этих данных довольно низкая: всего пять переменных для каждой записи. Простое хранение ваших наборов данных помогает значительно увеличить масштаб. Имейте в виду, что пять переменных для каждой записи здесь означают около миллиона значений в памяти браузера во время визуализации.
Конечная точка, вы упоминаете, что вы извлекаете данные в формате JSON. Хотя это очень удобно в Javascript, разбор и проверка больших файлов JSON довольно требовательны. Кроме того, это не самый компактный формат. Crossfilter example data отформатированы как очень простой и жесткий CSV-файл.
Таким образом, вы должны найти сладкое пятно между размером и сложности ваших данных. Один миллион значений данных (размер раз сложности) вполне осуществимо. Увеличьте это на один порядок и ваше приложение может по-прежнему можно использовать.
Как отмечает @Mark, рассмотрение холста и рендеринга DOM - одно дело. Безусловно, самый большой расход в веб-визуализации - это элементы DOM.
Однако в какой-то степени crossfilter может смягчить это, объединив данные в меньшее количество визуальных элементов. Он может привлечь вас к сотням тысяч рядов данных. 1 ГБ может подталкивать его, но возможно 100 мегабайт.
Но вам нужно знать, на каком уровне вы агрегируете. Так, например, если это неделя данных временных рядов, вероятно, копание по часам является разумной визуализацией, для 7 * 24 = 168 пунктов. На самом деле вы не сможете воспринимать еще много очков, поэтому бессмысленно просить браузер нарисовать тысячи элементов.
- 1. Как визуализировать большой набор документов?
- 2. d3 - Постепенно нарисуйте большой набор данных
- 3. D3: Как показать большой набор данных
- 4. d3.js набор данных матрицы матрицы рассеивания
- 5. Возвращение JS набор данных из функции D3
- 6. поток большой набор данных с сервера и визуализировать данные асинхронно
- 7. Насколько большой набор данных может обрабатывать ELKI?
- 8. Большой набор данных не правильно использует функции JS/Leaflet
- 9. Barplot большой набор данных
- 10. Передать большой набор данных
- 11. hadoop большой набор данных
- 12. Нокаут + большой набор данных
- 13. Как обрабатывать большой набор данных в d3js
- 14. Большой d3.js график, холст или рендеринг на стороне сервера?
- 15. D3 JS Фильтрация данных
- 16. Развернуть очень большой набор данных
- 17. Python: большой набор 2D-массивов numpy ... как визуализировать в 3D?
- 18. D3.js - Как обновить набор данных с помощью Javascript?
- 19. D3 - легенда не будет визуализировать
- 20. Большой набор данных на Sigma.js
- 21. Сколько стоит «большой» набор данных?
- 22. Визуально заказать большой набор данных
- 23. D3.js не может загрузить файл json
- 24. Сокращение данных на лету в D3.js
- 25. D3.js «экспорт» данных
- 26. Большой набор данных и winforms
- 27. Highcharts большой набор данных кластеров
- 28. Extjs + D3: визуализировать конфликт
- 29. Создать набор данных из массива чисел с d3.js
- 30. D3.JS - не может превратить выбор
Я несколько раз отвечал на этот вопрос несколько лет. Я рекомендую вам пойти и прочитать [this] (https://msdn.microsoft.com/en-us/library/ie/gg193983%28v=vs.85%29.aspx#Using_Canvas_AndOr_SVG). – Mark