将networkx DiGraph打印为嵌套JSON格式

时间:2013-10-14 06:35:10

标签: python json serialization d3.js networkx

我有一个networkx DiGraph。

>> 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

我不知道该如何解决这个问题。任何帮助非常感谢。

感谢。

1 个答案:

答案 0 :(得分: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}]}