2013-06-25 4 views
1

Я использую JSNetworkX для исследования и рендеринга графа.JSNewtworkX stop layout

JSNetworkX использует D3.js для визуализации графа. Однако, поскольку я работаю с большим графиком (json-файл около 5 Мб), я хотел бы сделать этот график напрямую без анимации (так, при размещении каждого узла напрямую без привлечения силы).

Я пытаюсь использовать D3.layout.force(). Stop() после рендеринга, но без эффектов. Из-за этого я думаю, что это нужно сделать в jsnx.draw, см. Мой код ниже.

jsnx.draw(G, { 
    element: 'body', 
    d3: d3, 
    layout_attr: { 
     charge: -1500, 
     linkDistance: 1, 
     gravity: 1, 
     friction: 0.4, 
     alpha: -100 
    }, 
}); 
force = d3.layout.force(); 
+0

К сожалению, вы не можете использовать текущую версию. Вам нужен силовой макет вообще или у вас уже есть позиции для каждого узла? FWIW, если у вас действительно большой граф, даже статический макет будет медленным, потому что у вас все равно будет слишком много элементов SVG. Следующая версия будет включать WebGL для больших графиков. –

+0

Ой ... Хорошо, понял. У меня уже приблизительная позиция для каждого узла (кластеризация). Итак, я буду использовать статический граф D3. Для графика 5mb требуется рентабельность в 15 секунд ... Но этого достаточно ... Спасибо за ваш комментарий и спасибо за JSNetworkX :) (я последую за его разработкой) Спасибо большое :) – Blooheek

ответ

0

К сожалению, вы не можете сделать это с текущей версией. Вам нужен силовой макет вообще или у вас уже есть позиции для каждого узла? FWIW, если у вас действительно большой граф, даже статический макет будет медленным, потому что у вас все равно будет слишком много элементов SVG. Следующая версия будет включать WebGL для больших графиков.

Итак, мы не можем на данный момент.

0

Начиная с версии v.3.3.4, jsnx.draw возвращает объект компоновки сил, чтобы вы могли сделать var force = jsnx.draw{/*...*/}, затем force.stop().