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