如何使用 Python 中的库 networkx 将 JSON 文件转换为图形?
How to convert a JSON file to a graph with library networkx in Python?
我有一个很大的 JSON 文件,我想用 networkx 库将它转换成图表。
JSON 文件包含如此多的节点,例如:
{“数据”:[{
“d”:2,
“来源”:“C”,
“目标”:“L”
},...]}
我已经打开了 JSON 文件并提取了 JSON 文件中的每个“数据”字典。但是,我不知道如何使用 networkx 将我所有的源节点、目标节点考虑到属性“d”转换为图形。
import networkx as nx
import json
lst = list()
with open('json_file.json') as json_load:
data = json.load(json_load)
lst.extend( data["edges"])
d, src, tgt = [],[], [], []
for elem in lst:
d.append(elem["data"]["d"])
src.append(elem["data"]["source"])
tgt.append(elem["data"]["target"])
G = nx.Graph()
G.add_edges_from([tuple(zip(src, tgt))])
当我写最后一行将边插入到 G 图中时,它并没有真正起作用。我有一个错误。我猜是因为我没有正确地将源节点和目标节点合并在一起。
另外,我还有一个问题。我也不知道如何为图中的每个节点考虑属性“d”。
传递给 G.add_edges_from
的参数无效,具体来说 zip
将几个可迭代对象一起 ping 的结果已经是一个可迭代的元组,因此只需要 zip(src, tgt, d)
。接下来,根据功能要求确保 d
是字典列表。
这是一个可重现的例子:
import networkx as nx
src = ["A", "B", "C"]
tgt = ["B", "C", "D"]
d = [{"weight": 2}, {"weight": 3}, {"weight": 4}]
G = nx.Graph()
G.add_edges_from(zip(src, tgt, d))
我有一个很大的 JSON 文件,我想用 networkx 库将它转换成图表。 JSON 文件包含如此多的节点,例如:
{“数据”:[{ “d”:2, “来源”:“C”, “目标”:“L” },...]}
我已经打开了 JSON 文件并提取了 JSON 文件中的每个“数据”字典。但是,我不知道如何使用 networkx 将我所有的源节点、目标节点考虑到属性“d”转换为图形。
import networkx as nx
import json
lst = list()
with open('json_file.json') as json_load:
data = json.load(json_load)
lst.extend( data["edges"])
d, src, tgt = [],[], [], []
for elem in lst:
d.append(elem["data"]["d"])
src.append(elem["data"]["source"])
tgt.append(elem["data"]["target"])
G = nx.Graph()
G.add_edges_from([tuple(zip(src, tgt))])
当我写最后一行将边插入到 G 图中时,它并没有真正起作用。我有一个错误。我猜是因为我没有正确地将源节点和目标节点合并在一起。
另外,我还有一个问题。我也不知道如何为图中的每个节点考虑属性“d”。
传递给 G.add_edges_from
的参数无效,具体来说 zip
将几个可迭代对象一起 ping 的结果已经是一个可迭代的元组,因此只需要 zip(src, tgt, d)
。接下来,根据功能要求确保 d
是字典列表。
这是一个可重现的例子:
import networkx as nx
src = ["A", "B", "C"]
tgt = ["B", "C", "D"]
d = [{"weight": 2}, {"weight": 3}, {"weight": 4}]
G = nx.Graph()
G.add_edges_from(zip(src, tgt, d))