2013-02-24 3 views
10

Следующая мультиграф участки правильно (т.е. параллельные ребра не перекрывают друг друга) с использованием Graphviz Neato для генерации PNG (как показано на this answer)NetworkX: Перекрытие края при визуализации мультиграф

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 

Однако с помощью функции прорисовки NetworkX не делает трюк

nx.draw_graphviz(Gm,prog='neato') 

Возможно ли предотвратить перекрытие краев с помощью методов draw от Networkx?

Thanks

ответ

8

К сожалению, нет. Технически это возможно, но пока никто не написал код.

+0

Связанные, намекая, где это должно быть добавлено в NetworkX: https://groups.google.com/forum/#!msg/networkx-discuss/K6QYbpBDUfk/1GqbsiocpCAJ –

0

Ну, я знаю, что он, вероятно, не тот, который вы ищете, но я столкнулся с аналогичной проблемой, когда мне захотелось иметь ориентированный граф, где граница между двумя узлами имела разный вес в зависимости от направления (будь то входя в или из узла), и работа вокруг, я сделал, я использовал другой цвет для каждого края и уменьшил непрозрачность для одного из них, чтобы он показывал, даже если они перекрываются. Мне нужны были только два ребра между моими двумя узлами, поэтому он сделал трюк для меня.

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() 

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^