NetworkXは、Pythonでネットワークやグラフ構造を扱うための強力なライブラリです。データ分析やネットワーク理論、SNSの友達関係解析、物流経路の最適化など、幅広い分野で活用されています。この記事では、NetworkXの使い方や具体的な使い道、初心者でもすぐに始められる基本操作をわかりやすくまとめます。
NetworkXは、Pythonでグラフやネットワークを作成・操作・分析するためのライブラリです。ノード(頂点)とエッジ(辺)で構成されるグラフを簡単に扱えるのが特徴で、最短経路探索やコミュニティ検出、ネットワークの可視化など、さまざまな分析が可能です。
まずはNetworkXをインストールしましょう。Python環境が整っていれば、コマンドプロンプトやターミナルで以下のコマンドを実行します。
pip install networkx
Matplotlibも一緒にインストールしておくと、グラフの可視化が簡単にできます。
NetworkXでは、無向グラフと有向グラフの2種類が扱えます。
import networkx as nx
G = nx.Graph() # 無向グラフ
DG = nx.DiGraph() # 有向グラフ
ノードやエッジは簡単に追加できます。エッジを追加すると、存在しないノードも自動で追加されます。
G.add_node(1)
G.add_nodes_from([2, 3])
G.add_edge(1, 2)
G.add_edges_from([(2, 3), (3, 1)])
NetworkXはMatplotlibと連携して、グラフを画像として表示できます。
import matplotlib.pyplot as plt
nx.draw(G, with_labels=True)
plt.show()
最後に、無向グラフと有向グラフの両方を同時に作成し、それぞれを並べて可視化するサンプルを紹介します。
import networkx as nx
import matplotlib.pyplot as plt
# 無向グラフの作成
G = nx.Graph()
G.add_nodes_from([1, 2, 3])
G.add_edges_from([(1, 2), (2, 3), (3, 1)])
# 有向グラフの作成
DG = nx.DiGraph()
DG.add_nodes_from(['A', 'B', 'C'])
DG.add_edges_from([('A', 'B'), ('B', 'C'), ('C', 'A')])
# 両グラフを並べて描画
plt.figure(figsize=(12, 5))
plt.subplot(121)
nx.draw(G, with_labels=True, node_color='lightblue', edge_color='gray')
plt.title('Undirected Graph')
plt.subplot(122)
nx.draw(DG, with_labels=True, node_color='lightgreen', edge_color='gray', arrows=True)
plt.title('Directed Graph')
plt.show()
このサンプルでは、左に無向グラフ、右に有向グラフが表示されます。ノードやエッジの追加、可視化方法の違いも一目で分かります。
SNSの友達関係や企業間の取引ネットワークなど、現実世界のネットワークを分析できます。たとえば、Zacharyの空手クラブネットワークを分析する例があります。
ダイクストラ法や幅優先探索など、複雑なアルゴリズムも簡単に利用できます。
import networkx as nx
G = nx.Graph()
G.add_edges_from([("S","A",{'weight':4}), ("S","B",{'weight':3}), ("A","G",{'weight':6}),("B","G",{'weight':4}),("A","B",{'weight':4})])
print(nx.dijkstra_path(G, "S", "G")) # 最短経路
print(nx.dijkstra_path_length(G, "S", "G")) # 最短距離
ネットワーク内のグループ(コミュニティ)を見つけることもできます。
作ったグラフはGML形式などで保存・読み込みが可能です。
nx.write_gml(G, 'graph.gml')
G = nx.read_gml('graph.gml')
NetworkXは、Pythonでグラフやネットワーク分析を始めたい方に最適なライブラリです。インストールも簡単で、基本的な操作から高度な分析まで幅広くカバーしています。SNSの友達関係分析や物流経路の最適化、コミュニティ検出など,ビジネスや研究の現場で役立つ場面がたくさんあります。
これからグラフ分析を始めたい方は、ぜひNetworkXを使ってみてください!