我想在d3.js中显示一个已在python / networkx(强制有向图)中构建的图形。我注意到序列化的json仅在节点创建时使用ID作为ID从0开始时才有效。 下面我给出了仍然显示这种现象的最小代码:
import networkx as nx
from networkx.readwrite import json_graph
G = nx.Graph()
G.add_node(1)
G.add_node(2)
G.add_edge(1,2)
print (list(G.nodes()))
print (list(G.edges()))
data = json_graph.node_link_data(G)
print(data)
# output:
[1, 2] # the nodes
[(1, 2)] # the edge between the 2 nodes
{'links': [{'source': 0, 'target': 1}], 'nodes': [{'id': 1}, {'id': 2}], 'multigraph': False, 'directed': False, 'graph': {}}
链接的属性显示问题:'source':0和'target':1但是节点的ID是1和2.
序列化后,链接被描述为ID为0和1的节点之间的连接,尽管ID已被定义为1和2。 我已经尝试了很多东西,但基本上链接使用ID从0开始。因此,除非我的节点遵循相同的编号,否则序列化中的链接不正确。
我无法想象它应该像这样工作,还是我犯了错误?