Проблема, которую вы пытаетесь решить, известна как макеты графиков . В сети x есть несколько алгоритмов компоновки графа: networkx.drawing.layout . Вот пример:
import networkx as nx
G = nx.Graph()
G.add_nodes_from([1,2,3,4,5])
G.add_edges_from([(1,2),(2,3),(2,4),(4,5)])
nx.spring_layout(G)
Возвращает координаты всех узлов:
{1: array([-0.73835686, 0.38769421]),
2: array([-0.11386106, 0.22912486]),
3: array([0.14264776, 0.81717097]),
4: array([ 0.21475452, -0.43399004]),
5: array([ 0.49481564, -1. ])}