#python #networkx
Вопрос:
Я пытаюсь создать сетевой график с помощью Networkx, но не получаю необходимых выходных данных.
Требуемая Производительность:
Этот вывод был создан путем определения pos, который выглядит следующим образом:
pos = {"A": (0,0),
'P_b_A_B': (1,0),
"B": (2,0),
"C": (3, 0),
"H": (4,-2),
"E" : (0,-4),
"G": (1,-4),
"P_b_G_H": (2,-4),
"P_sb": (5,-2)
}
nx.draw(G, node_size=1200, node_color="skyblue",pos = pos,with_labels = True )
Но поскольку поток зависит от результатов предыдущего процесса, мне нужно соответствующим образом нарисовать график. Я попытался использовать spectral_layout networkx, который выдал следующий вывод
используемый код:
nx.draw(G, with_labels=True, node_size=1500, node_color="skyblue", pos=nx.spectral_layout(G))
plt.title("spectral")
plt.show()
Комментарии:
1. Вероятно, вам придется написать пользовательскую функцию для вычисления позиций узлов на основе ожидаемых результатов предыдущего шага. Я сомневаюсь, что существует алгоритм компоновки, который рассчитает именно то, что вам нужно из коробки. Мы могли бы дать больше помощи/советов здесь, если бы вы предоставили более подробную информацию о потенциальных результатах этого предыдущего шага и о том, как эти изменения влияют на желаемый сюжет.
2. Да, просто обойдите это, написав алгоритм. Это план перемещения материала, а путь, по которому следуют различные материалы, является вводом пользователя и, следовательно, трудно получить какое-либо отображение. В алгоритме pos определяется тем, что находится рядом с соседними элементами. Ветвление (будет ли узел выше или ниже следующего узла) определяется переменной направления, которую я ввел. Спасибо