directed - networkx python example
Networkx: bordes superpuestos al visualizar MultiGraph (2)
Bueno, sé que probablemente no es lo que estás buscando, pero me enfrentaba a un problema similar en el que quería tener un gráfico dirigido donde el borde entre dos nodos tenía un peso diferente dependiendo de la dirección (si entraba o salía) del nodo) y el trabajo que hice fue que utilicé un color diferente para cada borde y disminuí la opacidad para uno de ellos, por lo que se mostraría incluso si se superponen. Solo necesitaba dos bordes entre mis dos nodos, así que funcionó el truco para mí.
G = nx.DiGraph()
G.add_nodes_from([0,1])
pos = nx.circular_layout(G)
nx.draw_networkx_nodes(G, pos, node_color = ''r'', node_size = 100, alpha = 1)
nx.draw_networkx_edges(G, pos, edgelist = [(0,1)], width = 2, alpha = 0.5, edge_color=''b'')
nx.draw_networkx_edges(G, pos, edgelist= [(1,0)], width = 1, alpha = 1)
plt.axis(''off'')
plt.show()
Los siguientes gráficos multigrafiados correctamente (es decir, los bordes paralelos no se superponen) usando graphviz neato para generar un png (como se muestra en esta respuesta )
import networkx as nx
nx.MultiGraph ([(1,2),(1,2),(1,2),(3,1),(3,2)])
nx.write_dot(Gm,''multi.dot'')
!neato -T png multi.dot > multi.png
Sin embargo, usar la función de dibujar de Networkx no hace el truco
nx.draw_graphviz(Gm,prog=''neato'')
¿Es posible evitar la superposición de bordes utilizando los métodos de dibujo de Networkx?
Gracias
Lamentablemente no. Es técnicamente posible de hacer, pero hasta ahora nadie ha escrito el código.