2013-05-30 7 views
1

Мне нужно нарисовать график с повторяющимися ребрами (т. Е. Более одного края между двумя узлами). Я пробовал:Как нарисовать график с повторяющимися ребрами в networkx в python

import networkx as nx 
edges = [(0, 1), (0, 1)] 

G = nx.DiGraph() 
G.add_edges_from (edges) 

print G.edges() 
#[(0, 1)] 

Повторяющиеся записи просто отбрасываются. Есть ли способ сделать это?

+0

его довольно легко просто генерировать свой собственный источник DOT ... не знаю, как вы могли бы сделать это с networkx –

+0

@JoranBeasley Можете ли вы подробно остановиться на источнике DOT? :-) –

+1

http://www.graphviz.org/content/dot-language (см .: https://stamm-wilbrandt.de/GraphvizFiddle/?1498108430658#digraph%20G%20%7B%0A%20%20a % 20-% 3E% 20b% 20% 5B% 20label% 20% 3D% 20% 22foo% 22% 20% 5D% 3B% 0A% 20% 20a% 20-% 3E% 20b% 20% 5B% 20label% 20 % 3D% 20% 22bar% 22% 20% 5D% 3B% 0A% 7D) –

ответ

6

Я не эксперт по networkx либо, но, в соответствии с документацией here:

мультиграфы NetworkX предоставляет классы для графов, которые позволяют несколько ребер между любой парой узлов. Классы MultiGraph и MultiDiGraph позволяют вам добавить один и тот же край дважды, возможно, с различными данными о краю. Это может быть мощным для некоторых приложений, , но многие алгоритмы на этих графах не определены. Самый короткий путь - один из примеров. Где результаты хорошо определены, например. MultiGraph.degree() мы предоставляем функцию. В противном случае вы должны преобразовать в стандартный график таким образом, чтобы определить измерительную скважину .

Таким образом, пример должен работать, если одно изменение сделано - создать G следующим образом:

G = nx.MultiGraph()