Seems like there should be a method in networkx to export the json graph format, but I don't see it. I imagine this should be easy to do with nx.to_dict_of_dicts(), but would require a bit of manipulation. Anyone know of a simple and elegant solution?
In the networkx implementation, graph objects store their data in dictionaries. Nodes are part of the attribute Graph. node , which is a dictionary where the key is the node ID and the values are a dictionary of attributes. Edges are part of the attribute Graph.
NetworkX uses dicts to store the nodes and neighbors in a graph.
This documentation contains a full description
A simple example is this:
import networkx as nx from networkx.readwrite import json_graph DG = nx.DiGraph() DG.add_edge('a', 'b') print json_graph.dumps(DG)
You can also take a look at the Javascript/SVG/D3 nice example on adding physics to the graph visualization.
Here is a JSON approach that I just did, together with code to read the results back in. It saves the node and edge attributes, in case you need that.
import simplejson as json import networkx as nx G = nx.DiGraph() # add nodes, edges, etc to G ... def save(G, fname): json.dump(dict(nodes=[[n, G.node[n]] for n in G.nodes()], edges=[[u, v, G.edge[u][v]] for u,v in G.edges()]), open(fname, 'w'), indent=2) def load(fname): G = nx.DiGraph() d = json.load(open(fname)) G.add_nodes_from(d['nodes']) G.add_edges_from(d['edges']) return G
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With