LoginSignup
5
4

More than 3 years have passed since last update.

Pythonでネットワーク分析 -- ネットワーク分析用ライブラリ(networkx)で簡単なグラフを書いてみる --

Last updated at Posted at 2019-10-14

1.始めに

「networkx」とは、Python用のネットワーク分析用ライブラリです。
各種ネットワークのクラスタリングや中心的な要素を発見するための分析に用いられます。

ネットワーク分析は実際に以下のような分野において応用されています。

  • ソーシャルネットワーク
     例)SNSのインフルエンサーを分析

  • 企業間ネットワーク
     例)企業間の取引データから自社の強みとなる分野を分析 

  • 交通ネットワーク
     例)流通における最短経路や最安経路の特定、派生して流通経路の最適化の分析

本稿では、「networkx」ライブラリを利用して簡単なネットワーク図を描画するまでの過程を紹介します。
なお、ドキュメントはバージョン2.3を参照しています。
参照したドキュメントのリンク

2.参照する関数など

  • networkx.Graph():頂点(ノード)も辺(エッジ)も存在しない空のグラフを生成します。
  • Graph.add_node(ノード):単一ノードを追加します。
  • Graph.add_nodes_from(ノードリスト):複数ノードを追加します。
  • networkx.drawing.layout.spring_layout(グラフ):グラフ描画アルゴリズムの一つで、呪文と思ってください(無くても問題ありません)
  • networkx.draw_networkx_nodes(グラフ,描画位置,ノードリスト,ノードの色,ノードの大きさ,透過度):ノードを描画します。
  • networkx.draw_networkx_edges(グラフ,描画位置,エッジリスト,エッジの太さ,透過度,エッジの色):エッジを描画します。
  • networkx.draw_networkx_labels(グラフ,描画位置,文字の大きさ):ラベルを描画します。

3.サンプルコード

#「networkx」のインポートと出力用に「matplotlib」もインポート
import networkx as nx
import matplotlib.pyplot as plt

# ノードの数を指定せず初期化
G = nx.Graph()

# ノードの追加(単一)
G.add_node(0)

# ノードの追加(複数)
G.add_nodes_from([1 ,2 , 3, 4])

# ノードを描画する位置を決定
pos = nx.spring_layout(G)

# グラフの描画
# draw_networkx_nodes()でノードの描画
nx.draw_networkx_nodes(G, pos, nodelist=[0, 1], node_color='red', node_size=100, alpha=1)
nx.draw_networkx_nodes(G, pos, nodelist=[2, 3], node_color='blue', node_size=100, alpha=1)
nx.draw_networkx_nodes(G, pos, nodelist=[4], node_color='purple', node_size=100, alpha=1)

# draw_networkx_edges()でエッジの描画
nx.draw_networkx_edges(G, pos, edgelist=[(0, 1), (0, 2), (1, 3), (2, 1), (3, 0)], width=1, alpha=1, edge_color="black")
nx.draw_networkx_edges(G, pos, edgelist=[(2, 4), (4, 2), (4, 1), (4, 3)], width=3, alpha=1, edge_color="black")

# draw_networkx_labels()でラベルの描画
nx.draw_networkx_labels(G, pos, font_size=16)

#グラフの出力
plt.show()

4.サンプルコードの出力結果

sample.png

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4