2013-10-14 79 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