如何解决如何在NetworkX中将边的两部分列表转换为图形,使每组节点具有重叠的标签?
我目前正在尝试使用NetworkX将我拥有的JSON文件转换为二部图。我的数据如下:
'edges': [
{'A': 8,'B': 6},{'A': 21,'B': 4},{'A': 27,{'A': 4,'B': 5},...
]
基本上,我有两组节点:A和B。边列表描述了A组节点与B组节点的连接方式。
我的问题是节点的标识符重叠。换句话说,我在集合A中有节点0、1、2等,在集合B中有0、1、2等(节点的数量不一定相同,但是它们的值重叠)。当我尝试将所有节点添加到图形中时,由于某些节点被重复,因此无法获得所有节点。
如何处理两个集合中的重复节点?它们实际上是不同的节点,但是NetworkX并未将其视作此类。我看到您可以为节点设置“值”,但是我不确定如何将所有内容组合在一起。
最后,我希望有一种生成节点的方法,以便可以通过以下方式将边添加到图形中:
import networkx as nx
G = nx.Graph()
# Add nodes here
# Add edges
G.add_edges_from(
(edge['B'],edge['A'])
for edge in graph['edges']
)
解决方法
您可以向图中添加ID不等于字典中的值,但等于AB类型加值的节点:
import networkx as nx
# Create edges dict and graph
edges = [
{'A': 8,'B': 6},{'A': 21,'B': 4},{'A': 27,{'A': 4,'B': 5},]
G = nx.Graph()
for edge in edges:
# Create A-id
a_id = 'A' + str(edge['A'])
# Add node with A-id to graph
G.add_node(a_id)
# Add value to node data
G.nodes[a_id]['value'] = edge['A']
# Create B-id
b_id = 'B' + str(edge['B'])
# Add node with B-id to graph
G.add_node(b_id)
# Add value to node data
G.nodes[b_id]['value'] = edge['B']
# Add A-id - B-id edge to graph
G.add_edge(a_id,b_id)
如果要绘制图形:
nx.draw(
G,node_color='#FF0000',with_labels=True
)
您将获得以下内容:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。