0

私は networkxmatplotlibを使用しています

ノードの色を設定したいので、テキスト ファイルからグラフを読み込みます。

G=nx.read_edgelist("Edge.txt")
nx.draw(G)
plt.show()

例のEdgeファイルは次のとおりです

0 1
0 2
3 4

これが私がやったことであり、失敗しました

import networkx as nx
import matplotlib.pyplot as plt
G = nx.read_edgelist("Edge.txt")
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos,node_list=[0,1,2],node_color='B')
nx.draw_networkx_nodes(G,pos,node_list=[3,4],node_color='R')
plt.show()

結果は、エッジのない青いノードがたくさんあります

したがって、NodeListA=[0,1,2] を青に設定したい場合、NodeListB=[3,4] を赤に設定します。

どうやってやるの?

4

1 に答える 1

1

トップレベル関数draw_networkx_nodesを呼び出してノードを明示的に描画します

パラメータnode_listの値とパラメータnode_colorの値としてノードリストを渡します。

nx.draw_network_nodes(G, pos, node_list=NodeListA, node_color="#5072A7")

引数 pos は、キーがグラフのノードであり、値が x、y 位置である単なる python 辞書です。pos を簡単に指定するには、辞書を返すspring_layoutにグラフ オブジェクトを渡すことです。

pos = nx.spring_layout(G)

または、辞書を直接渡すこともできます。

pos = {
       0:(2,2),
       1:(3,5),
       2:(1,2),
       3:(5,5),
       4:(7,4)
}

OP 内のコードが実行される原因として考えられるのは、read_edgelist の呼び出しです。特に、渡されたファイルの形式が間違っている可能性があります。

これを確認する方法と修正する方法は次のとおりです。

G = nx.path_graph(5)

df = "/path/to/my/graphinit.edgelist"

nx.write_edgelist(G, df)    # save a properly formatted edgelist file

G = nx.read_edgelist(df)    # read that file back in
于 2013-04-18T08:30:34.300 に答える