OSS探訪GitHubでログイン

Pythonでグラフを構築し、経路・中心性・コミュニティを分析する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
17,310
主要言語
Python
ライセンス
未判定
リポジトリ最終更新
2026/10/02
ページ内ナビ

概要

NetworkXは、人、機器、道路、依存関係などをノードとエッジで表し、その構造をPythonで分析するライブラリです。グラフの作成、形式変換、アルゴリズムの実行、可視化用データの生成を一つのAPIで扱えます。

特徴と向いている用途

実機検証あり(下記の環境・範囲に限定) · 内容確認日:

主な特徴

属性付きグラフをPythonのオブジェクトとして扱う

無向・有向グラフや多重辺を持つグラフを作り、ノードとエッジへ任意の属性を付けられます。隣接リストや各種ファイル形式、表形式データとの入出力を通じて、既存データを関係モデルへ変換できます。

出典:[1][2]

経路、構造、重要度をアルゴリズムで測る

最短経路、連結成分、中心性、クラスタリング、コミュニティ検出、同型判定などを組み合わせられます。分析結果は辞書や反復可能な値として返るため、Pandasや可視化処理へ渡せます。

出典:[1][2]

向いている用途

関係性が答えを左右する問題を探索する

通信経路、組織内のつながり、ソフトウェア依存関係、交通網など、個々の行より接続関係が重要な分析に向きます。Python上でモデルと仮説をすばやく変更できるため、研究、教育、試作にも使いやすい構成です。

出典:[1][2]

導入前の確認

規模とアルゴリズムの計算量を見積もる

純粋なPythonオブジェクトを中心とするため、非常に大きなグラフや低遅延処理ではメモリーと実行時間が制約になります。NetworkXは複数のバックエンドを利用できますが、対応アルゴリズムや結果の差を確認し、実データ規模で測定する必要があります。GitHubの自動判定はNOASSERTIONですが、固定タグのLICENSE.txtは3条項BSDライセンスを明記しています。

出典:[3][4]

3.6.1 / Python virtual environment on local host

Installed the pinned package and ran the documented graph example, checking shortest path, degree centrality, and GraphML output.

参考にした公式資料

  1. [1]NetworkX 3.6.1 README(2026-10-04)
  2. [2]NetworkX 3.6.1 tutorial(2026-10-04)
  3. [3]NetworkX 3.6.1 backend documentation(2026-10-04)
  4. [4]NetworkX 3.6.1 license(2026-10-04)
編集部からの補足

表形式のデータだけでは見えにくい関係を、数行のPythonから検証できる入口の低さに注目しました。大規模グラフでは、使用するアルゴリズムの計算量と、必要に応じて選べるバックエンドを先に評価してください。

3ステップで試す

  1. 1

    隔離環境へ3.6.1を導入する

    Python 3.11以上を用意し、作業用の仮想環境へ固定版を導入します。

    python3 -m venv networkx-demo && . networkx-demo/bin/activate && python -m pip install 'networkx==3.6.1'
  2. 2

    経路と中心性を計算する

    小さなネットワークを作り、backupからserverへの最短経路と各ノードの次数中心性を表示します。routerとswitchが同率で上位になる結果を確認します。

    python -c "import networkx as nx; g=nx.Graph([('router','switch'),('switch','server'),('router','backup')]); print('path:', nx.shortest_path(g,'backup','server')); print('centrality:', sorted(nx.degree_centrality(g).items(), key=lambda x: -x[1]))"
  3. 3

    交換用ファイルを書き出す

    同じグラフをGraphMLへ保存して読み戻し、4ノードと3エッジが保持されたことを確認します。

    python -c "import networkx as nx; g=nx.Graph([('router','switch'),('switch','server'),('router','backup')]); nx.write_graphml(g,'network.graphml'); h=nx.read_graphml('network.graphml'); print('nodes:', sorted(h.nodes())); print('edges:', sorted(tuple(sorted(e)) for e in h.edges()))"
公式READMEで確認

成長

成長の推移 · 直近30日

17,310 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
31
Open PR
184

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • python
  • complex-networks
  • graph-theory
  • graph-algorithms
  • graph-analysis
  • graph-generation
  • graph-visualization
Stars
17,310
Forks
3,629
Watchers
279
Open Issues
130
Contributors
857
所有者種別
Organization
主要言語
Python
ライセンス
未判定
リポジトリ最終更新
2026/10/02

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?