What could cause NetworkX & PyGraphViz to work fine alone but not together? What could cause NetworkX & PyGraphViz to work fine alone but not together? python python

What could cause NetworkX & PyGraphViz to work fine alone but not together?


There is a small bug in the draw_graphviz function in networkx-1.11 triggered by the change that the graphviz drawing tools are no longer imported into the top level namespace of networkx.

The following is a workaround

In [1]: import networkx as nxIn [2]: G = nx.complete_graph(5)In [3]: from networkx.drawing.nx_agraph import graphviz_layoutIn [4]: pos = graphviz_layout(G)In [5]: nx.draw(G, pos)

To use the other functions such as to_agraph, write_dot, etc you will need to explicitly use the longer path name

 nx.drawing.nx_agraph.write_dot()

or import the function into the top-level namespace

from networkx.drawing.nx_agraph import write_dot()write_dot()

These command use graphviz to calculate the positioning of the nodes (graphviz_layout uses neato per default), and matplotlib to actually plot (i.e. draw) the graph.


nx.nx_pydot.graphviz_layout() seems to be the way to use graphviz_layout in Networkx release 1.11.

You may need to install Graphviz via

sudo apt-get install graphviz

Some example code from the documentation:

import networkx as nxG = nx.complete_graph(4)pos = nx.nx_pydot.graphviz_layout(G)

I suggest this as the Graphviz_layout documentation for 1.11