簡體   English   中英

具有特定位置的 networkx add_node

[英]networkx add_node with specific position

我還是 networkx 的初學者 我想在不同位置添加多種類型的節點,我使用了以下代碼

pos = {0: (40, 20), 1: (20, 30), 2: (40, 30), 3: (30, 10)} 
X=nx.Graph()
nx.draw_networkx_nodes(X,pos,node_size=3000,nodelist=[0,1,2,3],node_color='r')

但是當我想訪問 Graph X 時,如果我鍵入 X.node,它會返回一個空列表,如果我想添加更多節點,我必須在開始時使用 pos 字典設置它們的位置。

如何使用 add_node() 在特定位置 x 和 y 中將節點添加到圖形中

您可以使用以下方法設置單個節點位置,然后提取“pos”字典以在繪制時使用。

In [1]: import networkx as nx

In [2]: G=nx.Graph()

In [3]: G.add_node(1,pos=(1,1))

In [4]: G.add_node(2,pos=(2,2))

In [5]: G.add_edge(1,2)

In [6]: pos=nx.get_node_attributes(G,'pos')

In [7]: pos
Out[7]: {1: (1, 1), 2: (2, 2)}

In [8]: nx.draw(G,pos)

更新

添加繪圖

在此處輸入圖像描述

我不完全確定你想要完成什么,但我認為你想向圖中添加節點,將它們繪制在想要的位置並且仍然能夠在圖形對象中訪問它們。

由於您沒有將節點添加到圖中,這將是一個開始:

X.add_nodes_from(pos.keys())

那么在繪制圖形時就不必指定節點列表,這樣在添加新節點時就不必更改兩個不同地方的代碼。

如果您希望節點的位置作為節點屬性,您也可以這樣做:

for n, p in pos.iteritems():
    X.nodes[n]['pos'] = p

請注意,這些位置不會用作繪制圖形時的位置,必須明確設置。 然后,您可以使用以下方法繪制和顯示圖表:

nx.draw(X, pos)
plt.show()

假設您執行了 import from matplotlib import pyplot as plt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM