2010-07-02 15 views
16

लगता है जैसे वहाँ json ग्राफ प्रारूप निर्यात करने के लिए networkx में एक विधि होना चाहिए, लेकिन मैं यह नहीं देख पाते। मुझे लगता है इस nx.to_dict_of_dicts() के साथ क्या करने के लिए आसान होना चाहिए, लेकिन जोड़-तोड़ का एक सा की आवश्यकता होगी। किसी को भी एक सरल और सुरुचिपूर्ण समाधान के बारे में पता?विधि json ग्राफ को networkx ग्राफ को बचाने के लिए?

+1

वास्तव में क्या JSON ग्राफ प्रारूप है? – fmark

+0

मूल रूप से नोड्स और आसन्नताओं की एक सूची है, लेकिन एक सरल और विस्तारित संस्करण के साथ भ्रमित सॉर्टा: http://thejit.org/static/v20/Docs/files/Loader/Loader-js.html – Bob

उत्तर

1

नोड्स और किनारों पर्याप्त जानकारी रखते हैं? यदि हां, तो आप अपने खुद के समारोह लिख सकते हैं:।

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

यहाँ, एक JSON दृष्टिकोण है कि मैं अभी किया है एक साथ परिणामों में वापस पढ़ने के लिए कोड के साथ यह नोड और बढ़त विशेषताओं की बचत होती है, मामले में आपको लगता है कि जरूरत है ।

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 
14

यह documentation पूरा विवरण

शामिल एक साधारण उदाहरण यह है:

import networkx as nx 
from networkx.readwrite import json_graph 

DG = nx.DiGraph() 
DG.add_edge('a', 'b') 
print json_graph.dumps(DG) 

आप ग्राफ़ दृश्य करने के लिए भौतिक विज्ञान जोड़ने पर Javascript/SVG/D3 अच्छा उदाहरण पर एक नज़र ले जा सकते हैं।

2

आम तौर पर मैं निम्नलिखित कोड का उपयोग करें:

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) 

यह ग्राफ के बारे में अन्य जानकारी (दिशात्मकता, के अलावा links में json स्वरूपित ग्राफ और किनारों जिसमें नोड्स nodes में हैं पैदा करेगा ... आदि)

1

इस प्रयास करें:

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

# Read graph 
G = nx.read_gml('path_to_graph_graph.gml') 
संबंधित मुद्दे