python draw multigraph

2019-02-28 02:04发布

问题:

I try to draw multigraph in Python using graphviz.

For now I can draw usual graphs in Python somehow like:

import pygraphviz as pgv
G=pgv.AGraph()
G.add_node('a')
G.add_node('b')
G.layout()
G.add_edge('a','b','first')
G.add_edge('a','b','second')
sorted(G.edges(keys=True)) 
G.draw('file.png')

And I get on the output:

But actually I want get multigraph, i.e.

But documentation stays that it should differentiate :

I have no idea about drawing multigraph but not just graph.

Thanks for any help.

Addition:

it seems that there are no yet such libraries in python that can do it, so I did it using Wolfram Mathematica. But question is still opened.

Addition

Now working code looks so:

import pygraphviz as pgv
G=pgv.AGraph(strict=False)
G.add_node('a')
G.add_node('b')
G.layout()
G.add_edge('a','b','first')
G.add_edge('a','b','second')
sorted(G.edges(keys=True)) 
G.draw('file.png')

回答1:

As the documentation you quoted says, you need to specify strict=False when creating a multi-edge graph. Since you didn't do this your graph doesn't support parallel edges.