Как нарисовать параллельные края в Networkx / Graphviz
Я пытаюсь добавить параллельные ребра между двумя узлами, используя NetworkX, но это не удается из-за ошибки ниже. Что я делаю неправильно?
import networkx as nx
import graphviz
g1 = nx.MultiGraph()
node1 = 'a'
node2 = 'b'
g1.add_edge(node1,node2,key='one')
g1.add_edge(node1,node2,key='two')
A = nx.to_agraph(g1)
A.add_subgraph()
A.draw('test2.png', prog='dot')
Ошибка:
Traceback (most recent call last):
File "test2.py", line 12, in <module>
A = nx.to_agraph(g1)
File "C:\python27\lib\site-packages\networkx-1.11rc1-py2.7.egg\networkx\drawing\nx_agraph.py", line 152, in to_agraph
A.add_edge(u,v,key=str(key),**str_edgedata)
File "C:\python27\lib\site-packages\pygraphviz\agraph.py", line 481, in add_edge
eh = gv.agedge(self.handle, uh, vh, key, _Action.find)
KeyError: 'agedge: no key'
1 ответ
Вы можете сделать то же самое без использования graphviz. Я добавляю стиль соединения в nx.draw:
import networkx as nx
g1 = nx.DiGraph(directed=True)
node1 = 'a'
node2 = 'b'
g1.add_edge(node1,node2,key=1)
g1.add_edge(node2,node1,key=2)
nx.draw(g1, with_labels=True, arrows = True, connectionstyle='arc3, rad = 0.1')
2016-01-26 04:36