networkx.exception.NetworkXError: Node 64 has no position
networkx.exception.NetworkXError: Node 64 has no position
我在标题中遇到错误,已经有一些类似的问题,但 none 的主题似乎对我有用。这是我在 python:
中的代码
G = nx.Graph()
def addnodeoNx():
for k in randomGraph:
for j in randomGraph[k]:
G.add_node(j)
G.add_edges_from([(k, j)])
addnodeoNx()
print(G)
subax1 = plt.subplot(121)
nx.draw(G, with_labels=True, font_weight='bold')
subax2 = plt.subplot(122)
nx.draw_shell(G, nlist=[range(5, 10), range(5)], with_labels=True, font_weight='bold')
基本上,我试图在 NetworkX 中绘制一个随机图,在上面的代码中 randomGraph
是一个字典,键是所有边,值是每个边连接到的边数组,但是当我尝试 运行 代码时,它给了我以下错误:
File "c:\Users\besan\OneDrive\Desktop\LAM\testall.py", line 124, in <module>
nx.draw_shell(G, nlist=[range(5, 10), range(5)], with_labels=True, font_weight='bold')
File "C:\Users\besan\AppData\Local\Programs\Python\Python39\lib\site-packages\networkx\drawing\nx_pylab.py", line 1267, in draw_shell
draw(G, shell_layout(G, nlist=nlist), **kwargs)
File "C:\Users\besan\AppData\Local\Programs\Python\Python39\lib\site-packages\networkx\drawing\nx_pylab.py", line 121, in draw
draw_networkx(G, pos=pos, ax=ax, **kwds)
File "C:\Users\besan\AppData\Local\Programs\Python\Python39\lib\site-packages\networkx\drawing\nx_pylab.py", line 333, in draw_networkx
draw_networkx_nodes(G, pos, **node_kwds)
File "C:\Users\besan\AppData\Local\Programs\Python\Python39\lib\site-packages\networkx\drawing\nx_pylab.py", line 456, in draw_networkx_nodes
raise nx.NetworkXError(f"Node {e} has no position.") from e
networkx.exception.NetworkXError: Node 19 has no position.
nlist
告诉 draw_shell
将哪些节点放入内部 shell 和外部 shell。 draw_shell
的源代码是 here.
然后 draw_shell
使用 pos=shell_layout(G, nlist=nlist)
从节点创建位置。然后用 nx.draw(G,pos)
.
绘制
如果节点的位置尚未定义,函数 nx.draw
无法处理绘图。
在您的例子中,您已将节点 5 到 9 放入一个 shell 中,将 0 到 4 放入另一个中。但是9以上的任何节点都没有位置。
评论
将参数传递给从某处复制的函数时,应始终小心。参数的值可能很重要,否则它只会使用默认值。
我在标题中遇到错误,已经有一些类似的问题,但 none 的主题似乎对我有用。这是我在 python:
中的代码G = nx.Graph()
def addnodeoNx():
for k in randomGraph:
for j in randomGraph[k]:
G.add_node(j)
G.add_edges_from([(k, j)])
addnodeoNx()
print(G)
subax1 = plt.subplot(121)
nx.draw(G, with_labels=True, font_weight='bold')
subax2 = plt.subplot(122)
nx.draw_shell(G, nlist=[range(5, 10), range(5)], with_labels=True, font_weight='bold')
基本上,我试图在 NetworkX 中绘制一个随机图,在上面的代码中 randomGraph
是一个字典,键是所有边,值是每个边连接到的边数组,但是当我尝试 运行 代码时,它给了我以下错误:
File "c:\Users\besan\OneDrive\Desktop\LAM\testall.py", line 124, in <module>
nx.draw_shell(G, nlist=[range(5, 10), range(5)], with_labels=True, font_weight='bold')
File "C:\Users\besan\AppData\Local\Programs\Python\Python39\lib\site-packages\networkx\drawing\nx_pylab.py", line 1267, in draw_shell
draw(G, shell_layout(G, nlist=nlist), **kwargs)
File "C:\Users\besan\AppData\Local\Programs\Python\Python39\lib\site-packages\networkx\drawing\nx_pylab.py", line 121, in draw
draw_networkx(G, pos=pos, ax=ax, **kwds)
File "C:\Users\besan\AppData\Local\Programs\Python\Python39\lib\site-packages\networkx\drawing\nx_pylab.py", line 333, in draw_networkx
draw_networkx_nodes(G, pos, **node_kwds)
File "C:\Users\besan\AppData\Local\Programs\Python\Python39\lib\site-packages\networkx\drawing\nx_pylab.py", line 456, in draw_networkx_nodes
raise nx.NetworkXError(f"Node {e} has no position.") from e
networkx.exception.NetworkXError: Node 19 has no position.
nlist
告诉 draw_shell
将哪些节点放入内部 shell 和外部 shell。 draw_shell
的源代码是 here.
然后 draw_shell
使用 pos=shell_layout(G, nlist=nlist)
从节点创建位置。然后用 nx.draw(G,pos)
.
如果节点的位置尚未定义,函数 nx.draw
无法处理绘图。
在您的例子中,您已将节点 5 到 9 放入一个 shell 中,将 0 到 4 放入另一个中。但是9以上的任何节点都没有位置。
评论
将参数传递给从某处复制的函数时,应始终小心。参数的值可能很重要,否则它只会使用默认值。