NetworkXでネットワークの可視化
ここで紹介するコードのjupyternotebookは、GitHubに公開しています。
github.com/betashort/python/Graph
NetworkXのインストール
1 | conda install NetworkX |
グラフを作る
無向グラフ
無向グラフは、エッジに向きがないグラフです。
無向グラフは、nx.Graphを使います。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | import networkx as nx graph = nx.Graph() graph.add_nodes_from([ "A" , "B" , "C" , "D" , "E" , "F" ]) graph.add_edges_from([( "A" , "B" ), ( "B" , "C" ), ( "B" , "D" ), ( "C" , "D" ), ( "A" , "E" ), ( "C" , "E" ), ( "C" , "F" )] ) nx.draw_networkx(graph, node_color = 'red' , with_lables = True ) #plt.savefig('graph_sample.png') plt.show() |
有向グラフ
有向グラフは、エッジに向きがあるグラフです。
有向グラフを作るときは、nx.DiGraphを使います。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | import networkx as nx digraph = nx.DiGraph() digraph.add_nodes_from([ "A" , "B" , "C" , "D" , "E" , "F" ]) digraph.add_edges_from([( "A" , "B" ), ( "B" , "C" ), ( "B" , "D" ), ( "C" , "D" ), ( "A" , "E" ), ( "C" , "E" ), ( "C" , "F" )] ) nx.draw_networkx(digraph, node_color = 'red' , with_lables = True ) #plt.savefig('digraph_sample.png') plt.show() |
特徴量へのアクセス
ノードの数を取得する
1 | graph.number_of_nodes() |
エッジの数を取得する
1 | graph.number_of_edges() |
隣接行列を取得する
1 | nx.adjacency_matrix(graph) |
次数を取得する
1 2 3 4 | graph.degree() #ヒストグラム nx.degree_histogram() |