【徹底解説】NetworkX の利用方法や可視化の方法をわかりやすく

Posted: , Category: Python , コンピュータサイエンス , データ構造

NetworkXは、Pythonでグラフ構造の作成や各種アルゴリズムの操作、また可視化等を気軽にすることができます。

可視化では、Pythonのmatplotlibを利用できることや、内部はC, C++, fortran等の静的型付き言語で実装されていることから、軽量高速に動作します。

ほとんどPythonでグラフ構造を扱う際のデファクトスタンダードになっているかと思います。今回は、このNetworkXを利用する方法について解説します。

Networkは、3つのオブジェクトが登場します。それぞれ、Graph、Node、Edgeであり、上図の内容に対応しています。この記事の内容は、NetworkXで、Graph、Node、Edgeを操作し、可視化する方法について解説していきます。

基本的にNetworkXの公式ドキュメントに書かれている内容を中心にまとめていきます。

networkXのインストール

まずは、networkXをインストールしていきます。方法はとても簡単です。pipの場合とcondaの場合で次のコマンドによって、使用しているPython環境にインストールできます。

pipを利用したインストール

pip install network

condaを利用したインストール

conda install network

networkX経由でグラフを表示する

では、インストールできたら早速グラフを扱っていきましょう。

とはいえ、よくあるnetworkXの参考書や解説記事などは、まずnetworkXでグラフを作ってみようというところから始めると思いますが、まずnetworkXを動かす感覚を掴む方が優先度が高いと思うので、今回はnetworkXが用意している、GraphGenerators APIを利用して、サクッと既存のデータセットからグラフを表示してみましょう。

今回は、Les Miserables Networkと呼ばれるデータセットを利用してみます。これは、Les Miserablesの登場人物の相関図のグラフデータになります。

以下のコードでnetworkxを読み込みます。 読み込んだグラフの 情報は、nx.infoメソッドで表示することができます。

import networkx as nx

graph = nx.les_miserables_graph()
print(nx.info(graph))
# => Graph with 77 nodes and 254 edges

全部で77個のノードと254個のエッジがあることがわかりました。

networkxでグラフを表示

では、グラフを可視化してみましょう。networkxでグラフを可視化するには、ne.drawメソッドで簡単にグラフ化できます。描写には、matplotlibを利用するので、matplotlibも読み込んでおきましょう。

import matplotlib.pyplot as plt

nx.draw(graph, with_labels = True)
plt.show()

ちょっとごちゃ混ぜな感じですが、頂点とそれを結んだグラフとして可視化することができました。

【広告】
統計学的にあなたの悩みを解決します。
仕事やプライベートでお悩みの方は、ベテラン占い師 蓮若菜にご相談ください。

機械学習と情報技術