I took a quick peek at networkX.
A few things that strike me:
- a networkX Graph lives in Python memory whereas Neo4J is a Graph that lives in a fully functional DB. This means you get DB things like persistence, ACID, CRUD, commits, indexing, the ability to manage very large amounts of data. You can dump a networkX Graph into various file formats.
- The networkX API is more like Gremlin. The Cypher Query language is much nicer to use (in many ways.). I like the ASCII art with Nodes and Relationships instead of talking about Vertices and Edges
- since networkX is a Python library, you get all the Python libraries for free some of which are very rich. Cypher is built on top of Java, so it can be extended or called via Python drivers, but it's clumsier.
- networkX has more options for displaying graphs than Neo4J but I'm not clear on the details... Neo4J has the Browser which is interactive and has a nice basic functionality.
The above is from a brief look. I might be wrong on the details....