私はまだ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のグラフにノードを追加するにはどうすればよいですか
達成したいことは完全にはわかりませんが、ノードをグラフに追加し、ノードを目的の位置に描画し、グラフオブジェクト内のノードにアクセスできるように解釈します。
グラフにノードを追加しないので、それが始まりです。
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
。
次のアプローチを使用して個々のノードの位置を設定し、描画時に使用する「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)
[〜#〜]更新[〜#〜]
図面を追加