web-dev-qa-db-ja.com

特定の位置のnetworkx add_node

私はまだ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')

しかし、グラフXにアクセスしたい場合、X.nodeと入力すると空のリストが返され、さらにノードを追加したい場合は、pos辞書を使用して最初の位置を設定する必要があります。

Add_node()を使用して特定の場所xおよびyのグラフにノードを追加するにはどうすればよいですか

27
NBaz

達成したいことは完全にはわかりませんが、ノードをグラフに追加し、ノードを目的の位置に描画し、グラフオブジェクト内のノードにアクセスできるように解釈します。

グラフにノードを追加しないので、それが始まりです。

X.add_nodes_from(pos.keys())

そうすれば、グラフを描画するときにノードリストを指定する必要がないため、新しいノードを追加するときに2つの異なる場所でコードを変更する必要がありません。

ノードの位置をノード属性として使用する場合は、次のようにすることもできます。

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

これらの位置はグラフを描画するときの位置としては使用されず、明示的に設定する必要があることに注意してください。次に、グラフを描画して表示できます。

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

あなたがインポートをしたと仮定するとfrom matplotlib import pyplot as plt

30
Maehler

次のアプローチを使用して個々のノードの位置を設定し、描画時に使用する「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)

[〜#〜]更新[〜#〜]

図面を追加

enter image description here

37
Aric