コンテンツにスキップ

Python/NetworkX

出典: フリー教科書『ウィキブックス(Wikibooks)』

Python/NetworkXの概要

[編集]

NetworkXは、Pythonで利用できるオープンソースのネットワーク分析ライブラリであり、グラフ理論やネットワークの解析をサポートします。NetworkXは、ノード(Node)とエッジ(Edge)から成るグラフ(Graph)を作成し、ネットワークの構造や特性を調査するためのツールを提供しています。ネットワークの解析や可視化、ネットワークアルゴリズムの実行など、さまざまなネットワーク関連のタスクに利用されています。

主な機能

[編集]

1. グラフの作成: NetworkXは、無向グラフや有向グラフ、重み付きグラフなどさまざまなタイプのグラフを作成する機能を提供します。また、多重グラフ(複数のエッジが同じ2つのノードを結ぶグラフ)もサポートしています。

2. グラフの操作: NetworkXは、グラフにノードやエッジを追加・削除したり、グラフの特性を調査したりするための操作を提供します。ネットワークの構造を柔軟に変更できます。

3. グラフの解析: NetworkXは、グラフの特性や統計量を計算するためのツールを提供します。例えば、ノードの次数(Degree)、最短経路(Shortest Path)、クラスタリング係数(Clustering Coefficient)などを計算できます。

4. ネットワークの可視化: NetworkXは、グラフの可視化をサポートしており、Matplotlibなどのライブラリを使用してグラフを描画することができます。

5. ネットワークアルゴリズム: NetworkXは、さまざまなネットワークアルゴリズムを提供しています。例えば、グラフの中心性(Centrality)や連結成分(Connected Components)を計算するアルゴリズムがあります。

Python/NetworkXのコード例

[編集]

無向グラフの作成と描画の例

[編集]
import networkx as nx
import matplotlib.pyplot as plt

# 無向グラフの作成
G = nx.Graph()

# ノードの追加
G.add_node('A')
G.add_node('B')
G.add_node('C')

# エッジの追加
G.add_edge('A', 'B')
G.add_edge('B', 'C')

# グラフの描画
nx.draw(G, with_labels=True, node_color='skyblue', node_size=1000, font_size=12, font_weight='bold')
plt.show()

有向グラフの作成と描画の例

[編集]
import networkx as nx
import matplotlib.pyplot as plt

# 有向グラフの作成
G = nx.DiGraph()

# ノードの追加
G.add_node('A')
G.add_node('B')
G.add_node('C')

# エッジの追加
G.add_edge('A', 'B')
G.add_edge('B', 'C')

# グラフの描画
nx.draw(G, with_labels=True, node_color='lightgreen', node_size=1000, font_size=12, font_weight='bold', arrowsize=20)
plt.show()

グラフの解析の例

[編集]
import networkx as nx

# 無向グラフの作成
G = nx.Graph()
G.add_edges_from([('A', 'B'), ('B', 'C'), ('C', 'D'), ('D', 'A'), ('C', 'E'), ('E', 'F')])

# ネットワークの特性を調査
print("Number of nodes:", G.number_of_nodes())
print("Number of edges:", G.number_of_edges())
print("Degree of node 'C':", G.degree('C'))
print("Shortest path between 'A' and 'F':", nx.shortest_path(G, 'A', 'F'))

NetworkXのインストール方法

[編集]

NetworkXはpipコマンドを使用して簡単にインストールすることができます。以下のコマンドを実行してください: pip install networkx