Ответ 1
К сожалению, нет. Это технически возможно, но пока никто не написал код.
Правильно следуют следующие графические графики (то есть параллельные ребра не перекрываются), используя graphviz neato для генерации png (как показано в этом ответе)
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
Однако использование функции draw для Networkx не делает трюк
nx.draw_graphviz(Gm,prog='neato')
Возможно ли предотвратить перекрытие ребер с помощью методов рисования из Networkx?
Спасибо
К сожалению, нет. Это технически возможно, но пока никто не написал код.
Ну, я знаю, что это, вероятно, не то, что вы ищете, но я столкнулся с аналогичной проблемой, когда я хотел иметь ориентированный граф, где ребро между двумя узлами имело различный вес в зависимости от направления (входил он или нет узла), и я решил использовать другой цвет для каждого края и уменьшил непрозрачность для одного из них, чтобы он отображался, даже если они перекрываются. Мне нужно было только два ребра между моими двумя узлами, так что это помогло мне.
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()