TL; DRJavascript график раскладка алгоритм
Мне нужно установить макет графа программно, хотя код JavaScript.
Объяснение
У меня есть график в следующем формате:
var graph = {
"nodes": [
{"x": 0, "y": 0},
{"x": 0, "y": 0},
{"x": 0, "y": 0},
{"x": 0, "y": 0},
],
"edges": [
{"source": 0, "target": 1},
{"source": 1, "target": 2},
{"source": 1, "target": 3},
{"source": 3, "target": 2},
]
};
Все эти узлы имеют значение 0
X
и Y
. Если мы нарисуем это на холсте, график, очевидно, не будет выглядеть хорошо.
Я хочу применить алгоритм к этой структуре данных так, чтобы значения всех узлов были отрегулированы автоматически (с минимальными пересечениями кромок).
Существующие решения
Я попытался силы направленной макет D3.js и некоторых аналогичных решений. Но они требуют слишком много итераций, и большинство моих графиков имеют> 50 узлов с большим количеством ребер.
Алгоритм, который я ищу, должен создать макет в минимальной сложности и времени (или он должен быть по крайней мере быстрее, чем итеративные).
Matlab имеет три типа двигателей типа для своего biograph. LayoutTypeValue
может быть либо hierarchical
, radial
и equilibrium
. Радиальный, похоже, хорошая идея.
Спасибо.
Попробуйте найти Graphviz и javascript. – Jackson
[Neato engine] (http://mdaines.github.io/viz.js/form.html) для Graphviz отлично работает. Мне бы очень хотелось просмотреть источник JS алгоритма, но, к сожалению, это порт через [emscripten] (http://mdaines.github.io/viz.js/viz.js). –