Method to save networkx graph to json graph?

后端 未结 6 881
长发绾君心
长发绾君心 2020-12-29 04:38

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 wou

相关标签:
6条回答
  • 2020-12-29 04:46

    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.

    0 讨论(0)
  • 2020-12-29 04:49

    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
    
    0 讨论(0)
  • 2020-12-29 04:52

    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')
    
    0 讨论(0)
  • 2020-12-29 04:58

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

    json.dumps(dict(nodes=graph.nodes(), edges=graph.edges()))
    
    0 讨论(0)
  • 2020-12-29 05:05

    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")
    
    0 讨论(0)
  • 2020-12-29 05:12

    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)

    0 讨论(0)
提交回复
热议问题