Longitudes de borde especificadas en networkx / igraph (Python)

Quería visualizar una red con los datos que tengo y me gustaría graficarlos con longitudes de borde específicas. Utilizo Python y he intentado networkx y igraph para trazar, pero todos parecen asignar longitudes de borde fijas.

a.) Me pregunto si hice mal los códigos o si los paquetes no son realmente capaces. ¿Cómo implementas adecuadamente las longitudes de borde especificadas para networkx o igraph?

b.) Si networkx y igraph no pueden hacerlo, ¿qué paquete podría sugerir? (Preferiblemente uno que puede llevar más de 80 mil nodos).

¡Gracias!

Esto debería funcionar:

import networkx as NX import pygraphviz as PG G = PG.AGraph() nlist = "ABCDE".split() a, b = "AAB", "BCD" elist = zip(a.split(), b.split()) G.add_nodes_from(nlist) G.add_edges_from(elist) G.node_attr.update(color="red", style="filled") G.edge_attr.update(color="blue", len="2.0", width="2.0") print(G.edge_attr) # returns {'color': 'red', 'width': '', 'len': '2.0'} # add new edge with custom length (all others have length=2.0): G.add_edge("C", "E", len="3.0", color="blue", width="2.0") edge = G.get_edge("C", "E") print(edge_attr) # returns {'color': 'blue', 'width': '2.0', 'len': '3.0'} # and you can confirm that introspection by drawing & printing this graph: G.draw('somefolderandfilename.png', format='png', prog='neato') 

La mayoría de los algoritmos de dibujo de gráficos utilizan alguna versión de SMACOF, que por supuesto varía la longitud del borde; sin embargo, el motor de diseño gráfico ‘neato’ (suministrado como el segundo argumento para ‘dibujar’ arriba) debe conservar, si es posible, las longitudes de borde establecidas por el usuario.

La biblioteca que utilicé aquí es lo suficientemente resistente para manejar 80,000 nodos.