Мне нужно отобразить граф примерно с 1000 узлов и ребер. Узлы должны быть перетаскиваемыми, и все они должны работать в реальном времени без ожидания экранов.

Итак, я уже проверил множество фреймворков для визуализации js-графиков и до сих пор не могу найти решение.

Например, я взял "JavaScript InfoVis Toolkit" из вопроса: Какой самый быстрый, чистый Javascript, инструментарий для визуализации графиков? Это зависает на 250 узлах.

Все фреймворки работают довольно быстро, но только со 100-200 узлами. А на 500 узлах и ребрах они кидают исключения или вообще зависают.

Итак, вопрос: есть ли js-фреймворк, который мог бы работать с 500-1k узлов / ребер, или я должен реализовать что-то самостоятельно с использованием Canvas / WebGL.

6
Dmitry Zaets 31 Авг 2012 в 12:44
Не могли бы вы поделиться изображением того, как вы хотите, чтобы график выглядел?
 – 
MikaelEmtinger
1 Сен 2012 в 11:59
Как здесь: thejit.org/static/v20/Jit/Examples/ForceDirected /example1.html При этом пользователь должен видеть не все 1000 узлов :) Пользователь увидит только часть узлов, которые умещаются на экране (как часть увеличенного изображения)
 – 
Dmitry Zaets
3 Сен 2012 в 17:39
1
Хорошо, к сожалению, это будет непросто, но не невозможно. Я надеялся на что-то более жесткое (например, диаграмму или что-то в этом роде), которое можно было бы собрать в пару вызовов отрисовки WebGL. Беспокоит эффект пружины. Чтобы ускориться, вам нужно будет выполнить симуляцию пружины на графическом процессоре, используя текстуры с плавающей запятой ... Сложно;)
 – 
MikaelEmtinger
6 Сен 2012 в 11:02

1 ответ

Лучший ответ

Вы пробовали D3? http://d3js.org/

3
gmaliar 3 Сен 2012 в 18:12
2
Спасибо, отличная библиотека! Я пробовал "принудительный" пример с 1k узлов, но без ссылок, и он работает немного медленнее .. Думаю, мне также стоит попробовать пример без "принудительных" вычислений, он должен работать намного быстрее.
 – 
Dmitry Zaets
7 Сен 2012 в 11:47