for my thesis I need to draw some probabilistic control flow graphs. i.e. control flow graphs with probabilities depicted on the edges.
I found graph-tool which seems quite useful, since it can use deep-copies of existing graphs and my graphs are quite similar.
So my question is, if there is a possibility to draw edge properties (or some strings) on/next to the edges? If it’s not possible or highly complicated, is there a tool which is better to use in this case?
Edit:
I need directed edges that can even create loops between 2 nodes and have different values. Is there a possibility for this too? So I can see both values? By now I can see the directed graph with a 2-directional edge, but there’s only one value on it.
So e.g. in networkx (in reference to Hooked) it would look like:
G = nx.MultiDiGraph()
G.add_edge(0,1)
G.add_edge(1,0)
labels = {(0,1):'foo', (1,0):'bar'}
So that both ‘foo’ and ‘bar’ are visible and you can see which direction they are connected to.
But as networkx renders it, I get 1 bidirectional edge with 1 of the labels.
EDIT: If you need multidigraphs with edge labels, I don’t think you can do this completely within
networkx. However you can do most of it in python and do the rendering and layout with another program:I use graphviz to turn this into an image. On my Unix machine I run this from the command-line
Which gives the desired output you are looking for. Note that graphviz has many ways to customize the visual appearance. The above example simply produces: