Method to save networkx graph to json graph?

左心房为你撑大大i 提交于 2020-01-10 08:44:26

问题


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?


回答1:


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.




回答2:


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



回答3:


Generally I use the following code :

import networkx as nx; 
from networkx.readwrite import json_graph;
G = nx.Graph();
G.add_node(...)
G.add_edge(...)
....
json_graph.node_link_data(G)

it will create json formatted graph in which the nodes are in nodes and edges in links in addition to other information about the graph (directionality, ... etc)




回答4:


Are the nodes and edges enough information? If so, you could write your own function:

json.dumps(dict(nodes=graph.nodes(), edges=graph.edges()))



回答5:


Try this:

# Save graph
nx.write_gml(G, "path_where_graph_should_be_saved.gml")

# Read graph
G = nx.read_gml('path_to_graph_graph.gml')



回答6:


The rest of the solutions didn't work for me. From the networkx 2.2 documentation:

nx.write_gpickle(G, "test.gpickle")
G = nx.read_gpickle("test.gpickle")


来源:https://stackoverflow.com/questions/3162909/method-to-save-networkx-graph-to-json-graph

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!