gpt4 book ai didi

python - NetworkX 在 spring_layout 之后添加节点到图中

转载 作者:行者123 更新时间:2023-11-28 20:30:10 25 4
gpt4 key购买 nike

具有以下代码:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_nodes_from(range(1, 10))
G.add_edges_from([(1, 3), (2, 4), (3, 4), (2,6), (1, 2), (4, 9), (9, 1)])
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)
plt.show()
G.add_node(10)
nx.draw(G, pos, with_labels=True) # this gives the error
plt.show()

如何将节点 10 添加到图中的随机位置?我实际得到的错误是:

NetworkXError: Node 10 has no position.

如何将新创建的节点包含到已构建的 spring_layout 图中?

最佳答案

问题(正如其他人已经指出的那样)是 pos 是一个字典,它为每个节点分配一个位置。但是当您添加一个节点时,它不会更新 pos

下面将根据所有其他节点的现有位置为新节点 10 找到一个好的位置。基本上,它再次调用 spring_layout,但保留所有现有节点。我已将节点 10 连接到节点 9。

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_nodes_from(range(1, 10))
G.add_edges_from([(1, 3), (2, 4), (3, 4), (2,6), (1, 2), (4, 9), (9, 1)])
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)
plt.show()

G.add_node(10)
G.add_edge(9,10) #So node 10 should be close to node 9
oldnodes = list(G.nodes())
oldnodes.remove(10)
pos = nx.spring_layout(G, pos=pos, fixed=oldnodes)

nx.draw(G, pos, with_labels=True)
plt.show()

关于python - NetworkX 在 spring_layout 之后添加节点到图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58325794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com