[英]Networkx read_gml error "networkx.exception.NetworkXError: cannot tokenize u'graph' at (3, 1)"
[英]networkx.exception.NetworkXError: Node 64 has no position
我在標題中收到錯誤,已經有一些與此類似的問題,但似乎沒有一個主題對我有用。 這是我在 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,在上面的代碼中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
的源代碼在這里。
然后draw_shell
使用pos=shell_layout(G, nlist=nlist)
從節點創建位置。 然后它用nx.draw(G,pos)
繪制。
如果尚未定義節點的 position,則 function nx.draw
無法處理繪圖。
在您的情況下,您已將節點 5 到 9 放入一個 shell 並將 0 到 4 放入另一個中。 但是 9 以上的任何節點都沒有 position。
當您將參數傳遞給您從某處復制的 function 時,您應該始終小心。 參數的值很可能很重要,否則它只會使用默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.