Благодаря этому более раннему вопросу я создал статический график с фиксированной компоновкой, как показано ниже, используя принудительную компоновку в d3.js
:
и у меня есть два конкретных вопроса для дальнейшей настройки макета:
Во-первых, я замечаю, что детерминированная инициализация позиций узлов (например, сделанная здесь по диагонали, подробности см. в скрипте) фиксирует позиции узлы, и ориентация узлов, по-видимому, зависит от этой инициализации, а также от размеров графа силы*. Интересно, как сделать так, чтобы узлы A, D, E, F, I
на приведенном выше графике выровнялись по горизонтали? Другими словами, я хочу повернуть ориентацию графика против часовой стрелки примерно на 45 градусов. Я попытался инициализировать узлы горизонтально посередине:
nodes.forEach(function(d, i) { d.x = w / size * i; d.y = h / 2; });
но произведенный вывод имеет все узлы и ребра горизонтально в том месте, где они были инициализированы.
Во-вторых, правда ли, что график силы автоматически центрируется внутри элемента svg
? Если нет, то как мы можем сделать это так? Если да, то как мы можем указать центр графика силы в элементе svg
?
(* Примечание: как ни странно, при установке .size([w, h])
, где w = h
для графа силы, и детерминированной инициализации узлов по диагонали все узлы и ребра располагаются по этой диагонали в выходных данных, почему?)