Сгенерируйте координаты для иерархического графа сети, когда для каждого узла заданы уровни

Необходимо сгенерировать координаты (только по оси X) для иерархического сетевого графика, когда для каждого узла заданы уровни (ось Y). Здесь координата X должна быть в оптимальном положении в заданной координате Y.

В настоящее время для этого я использую библиотеку networkx с graphviz_layout в Python.

используемый фрагмент кода:

Q = nx.Graph()
Q.add_edges_from(arr_SrcTgt)
pos = graphviz_layout(Q,prog='dot')
nx.draw(Q,pos)
plt.show

выход:

введите здесь описание изображения

здесь нижние 4 узла должны быть сверху.

Поэтому я решил определить уровни (ось Y) каждого узла и получить координаты X с помощью алгоритма.

Любые идеи ? предпочитаю Python или Excel :) Спасибо.


person user11847694    schedule 22.05.2021    source источник
comment
Я не могу понять, что вы пытаетесь сделать. Предлагаем вам предоставить небольшой образец (4 или 5 узлов) с ожидаемым результатом.   -  person ravenspoint    schedule 22.05.2021
comment
@ravenspoint Я отредактировал свой пост. вы можете помочь?   -  person user11847694    schedule 22.05.2021
comment
Предлагаем вам предоставить небольшой образец (4 или 5 узлов) с ожидаемым результатом.   -  person ravenspoint    schedule 22.05.2021
comment
Предлагаем вам ознакомиться с руководством пользователя Neato graphviz.org/pdf/neatoguide.pdf. Вам нужен атрибут узла 'pos'.   -  person ravenspoint    schedule 22.05.2021
comment
спасибо, но мне нужен график в виде иерархии.   -  person user11847694    schedule 22.05.2021
comment
Вы пробовали использовать Neato? Какой ввод вы использовали? Как выглядел результат? (Все еще жду небольшой пример)   -  person ravenspoint    schedule 22.05.2021
comment
Как насчет многостраничного макета?: stackoverflow.com/a/67599152/11339311   -  person Sparky05    schedule 23.05.2021


Ответы (1)


Спасибо. Я придумал способ.

Я использовал DiGraph вместо Graph в том же коде. Затем все узлы были организованы в виде иерархии.

Q = nx.DiGraph()
person user11847694    schedule 23.05.2021