Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将networkx图形保存为json图形的方法?_Python_Json_Graph_Networkx - Fatal编程技术网

Python 将networkx图形保存为json图形的方法?

Python 将networkx图形保存为json图形的方法?,python,json,graph,networkx,Python,Json,Graph,Networkx,似乎networkx中应该有一个方法来导出json图形格式,但我没有看到它。我想这应该很容易用nx.to_dict_of_dicts()实现,但需要一些操作。有人知道一个简单而优雅的解决方案吗?节点和边是否有足够的信息?如果是这样,您可以编写自己的函数: json.dumps(dict(nodes=graph.nodes(), edges=graph.edges())) 这里是我刚刚使用的JSON方法,以及读取返回结果的代码。它会保存节点和边属性,以备需要 import simplejson

似乎networkx中应该有一个方法来导出json图形格式,但我没有看到它。我想这应该很容易用nx.to_dict_of_dicts()实现,但需要一些操作。有人知道一个简单而优雅的解决方案吗?

节点和边是否有足够的信息?如果是这样,您可以编写自己的函数:

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

这里是我刚刚使用的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
这包含了完整的描述

一个简单的例子是:

import networkx as nx
from networkx.readwrite import json_graph

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

您还可以看一看将物理添加到图形可视化中的好例子。

通常我使用以下代码:

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)
它将创建json格式的图形,其中节点位于
节点中,边位于
链接中
除了有关图形的其他信息(方向性等)

请尝试以下操作:

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

# Read graph
G = nx.read_gml('path_to_graph_graph.gml')

其余的解决方案对我不起作用。从
网络X 2.2


JSON图形格式究竟是什么?基本上是一个节点和相邻的列表,但它与一个简单的扩展版本混淆:@ Bob Hi,你知道,如何从C++中读取这个信息?这似乎不再有用了。特别是,'DiGraph'对象没有属性'edge'。AttributeError:module'networkx.readwrite.json_graph'没有属性'dumps'。指向添加物理的示例的链接已断开。
nx.write_gpickle(G, "test.gpickle")
G = nx.read_gpickle("test.gpickle")