How to draw parallel edges in Networkx / Graphviz
Asked Answered
C

2

6

I am trying to add parallel edges between two nodes using NetworkX but it fails with the below error. What am I doing wrong?

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

Error:

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'
Corollary answered 26/1, 2016 at 4:24 Comment(1)
Super old question, but I think networkx DiGraphs don't allow parallel edges. So when you add the edge with key='two', it doesn't actually get added to the graph.Eudemon
H
3

You can do the same without using graphviz. I do it adding connectionstyle to 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')

See here the result

Hemielytron answered 26/1, 2020 at 10:5 Comment(0)
D
1

Your code is working fine, and I attached the output image.

enter image description here

Delora answered 26/1, 2016 at 4:36 Comment(7)
Thanks for your response Abdallah. That doesn't work. It still gives me the same error. Have you actually tried that code? And does it work for you?Corollary
Sorry my bad I made mistakeDelora
Yes, I did not copy/paste my node definitions the first time. But it still doesn't work. I know my syntax is correct because if I make both keys to be the same value, it doesn't throw an error regarding syntax. Maybe I'm missing something in the installation of the packages.Corollary
Actually your code worked, and I have attached the image maybe try to reinstall the packagesDelora
I also tried the code and it works, however the import should be pygraphviz in my case.Bumper
Thank you both for your verifying the code. Importing pygraphviz instead of graphviz or importing both still gives me the same error. There's nothing I can find on this error message. Pygraphviz works fine for other scripts that I wrote. I'm doing this on Windows. Will try a linux machine and see how it goes.Corollary
Similar issue than: #35611236, it is maybe compilation error or Microsoft Windows relative bug - which windows version do you use ? RegardsTraumatize

© 2022 - 2024 — McMap. All rights reserved.