2013-10-14 103 views
1

我有一個networkx DiGraph。打印networkx DiGraph以嵌套JSON格式

>> G = nx.DiGraph() 
>> G.add_edges_from(product([0],[1,2])) # product is itertools.product 
>> G.add_edges_from(product([1],[3,4])) 

圖表看起來像這樣內:

>> G.adj 
{0: {1: {}, 2: {}}, 
    1: {3: {}, 4: {}}, 
    2: {}, 
    3: {}, 
    4: {}} 

謹以此將被打印到如下所示的JSON格式:

{ 
    name: 0, 
    children: [ 
     { 
      name: 1, 
      children: [ 
       { 
        name: 3, 
        children: [] 
       }, 
       { 
        name: 4, 
        children: [] 
       } 
       ] 
     }, 
     { 
      name: 2, 
      children:[] 
     } 
    ] 
} 

(其原因是,我試圖以D3可視化採取的格式編寫它。https://gist.github.com/mbostock/4063550

我不知道如何去做這件事。任何幫助非常感謝。

謝謝。

+0

你將不得不手動使這個自己。 –

+0

@GamesBrainiac克里斯托弗的答案效果很好。 – jason

回答

4

您可以使用json_graph.tree_data()以嵌套格式輸出數據。

the documentation

from networkx.readwrite import json_graph 
import networkx as nx 
import json 
G = nx.DiGraph([(1,2)]) 
data = json_graph.tree_data(G,root=1) 
s = json.dumps(data) 

其中給出{"id": 1, "children": [{"id": 2}]}

+0

謝謝,這正是我想要的! – jason